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



在QTreeView选择更改,我想恢复到以前的选择,如果一个特定的条件不满足

例如

:

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

目前我没有看到一个直接的方法来做到这一点,因为QModelIndex没有提供任何关于之前选择的信息。

有没有人对实现这个的最佳方式有任何建议?

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;
   }
}

视图选择有它自己的模型,QItemSelectionModel,用信号给你新的和以前的选择。

相关内容

  • 没有找到相关文章

最新更新