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

ビューの選択には独自のモデル がありQItemSelectionModel、新しい選択と前の選択を提供する信号があります。

于 2011-08-25T17:54:38.187 に答える
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 に答える