2010-12-01 5 views
0

私はQAbstractItemViewを使用してキューを操作しています。問題は、ユーザーが[送信]ボタンを押したときにエディタがモデルの値を閉じずに更新しないことです。これはいくらか不満を引き起こす。QAbstractItemViewのエディタを閉じる

私はQtドキュメントを使いましたが、エディタを閉じて変更をコミットする簡単な方法が見つからないようです。これについてどうすればいいですか?

答えて

0

は、あなたが現在使用してそれを閉じることができるはず開かれているアイテムのQModelIndexを持っているときに、選択モデルやItemView信号またはcurrentIndex()を通じて、現在開いているアイテムを追跡しなければならないように見えますclosePersistentEditor (const QModelIndex & index)

+0

openPersistentEditorを使ってエディタを作成した場合にのみclosePersistentEditorが動作すると思いますが、試してみます。 – dirk

1

これは私が使用したものです

void ProjectExplorerView::CloseCurrentEditorIfOpen(bool commit) 
{ 
    QWidget* w = indexWidget(currentIndex()); 
    if (w != nullptr) 
    { 
    if (commit) { 
     commitData(w); 
     closeEditor(w, QAbstractItemDelegate::SubmitModelCache); 
    } else { 
     closeEditor(w, QAbstractItemDelegate::RevertModelCache); 
    } 
    } 
} 
+0

私はcommitData()が重複していると思います。 – gremwell

+0

'commitData'は冗長ではありません。それを残すと、データがコミットされずにエディタが閉じられます。 –

+0

'closeEditor'の' QAbstractItemDelegate :: SubmitModelCache'フラグは、ala commitData AFAIKを送信します。したがって、あなたは手でそれを前に呼び出すことは冗長です。 – gremwell