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

Posted

技术标签:

【中文标题】Qt QTreeView - 当条件不满足时恢复到以前的选择【英文标题】:Qt QTreeView - Revert to previous selection when condition not met 【发布时间】:2011-08-25 14:31:48 【问题描述】:

在 QTreeView 选择更改时,我想恢复到以前的选择,如果某个 条件不满足。

例如:

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

        //do normal behaviour


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

是否有人对实现此功能的最佳方式有任何建议?

【问题讨论】:

【参考方案1】:
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;
   

【讨论】:

【参考方案2】:

视图选择有其自己的模型QItemSelectionModel,带有为您提供新选择和先前选择的信号。

【讨论】:

以上是关于Qt QTreeView - 当条件不满足时恢复到以前的选择的主要内容,如果未能解决你的问题,请参考以下文章

Qt - QPushButtons 代替 QTreeView 项目

qt QComboBox setView 到 QTreeView 不能做 setCurrentIndex

Qt QTreeView clicked函数如何区分左右键

无论如何在qt的同一个窗口中放置一个QTreeView和一个QChartView?

条件满足后,私有路由不重定向

自定义 QTreeView 项目