1

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

例如:

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

        //do normal behaviour

}

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

有没有人对实现这一点的最佳方法有任何建议?

4

2 回答 2

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;
   }
}
于 2011-08-25T15:55:32.273 回答
0

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

于 2011-08-25T17:54:38.187 回答