Qt QTreeView - 当条件不满足时,恢复到先前的选择

时间:2011-08-25 14:31:48

标签: c++ qt qwidget qtreeview

在QTreeView选择更改时,我想恢复到之前的选择,如果确定的话 条件不符合。

例如:

    void Editor::treeFolderSelected(QModelIndex const& index)
    {
        if(widget) {
            if(!widget->trySaveChanges()) {
                //revert to previous, validation failed
                return;
            }
        }

        //do normal behaviour

}

目前我没有看到直接的方法,因为QModelIndex没有提供有关之前选择的内容的任何信息。

有没有人对实施此方法的最佳方法有任何建议?

2 个答案:

答案 0 :(得分:0)

int lastSelection = -1;
bool abortEvent = false;
void Editor::treeFolderSelected(QModelIndex const& index)
{
   if (abortEvent) {
       abortEvent = false;
       return;   
   }
   if(widget) {
     if(!widget->trySaveChanges()) {
        if (lastSelection != -1) {
          abortEvent = true;
          select(lastSelection);
        }  
        return;
      }
      lastSelection = index;
   }
}

答案 1 :(得分:0)

视图选择有自己的模型QItemSelectionModel,其中的信号可以为您提供新的和之前的选择。