2011-08-25 56 views
0

在QTreeView选择更改上,如果某个 条件未得到满足,我想恢复到之前的选择。Qt QTreeView - 当条件不符合时恢复到之前的选择

例如:

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

     //do normal behaviour 

} 

目前我没有看到直接的方式做到这一点,因为QModelIndex没有提供关于什么是以前选择的任何信息。

有没有人有任何建议的最佳方式来实现呢?

回答

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