私はQAbstractItemViewを使用してキューを操作しています。問題は、ユーザーが[送信]ボタンを押したときにエディタがモデルの値を閉じずに更新しないことです。これはいくらか不満を引き起こす。QAbstractItemViewのエディタを閉じる
私はQtドキュメントを使いましたが、エディタを閉じて変更をコミットする簡単な方法が見つからないようです。これについてどうすればいいですか?
私はQAbstractItemViewを使用してキューを操作しています。問題は、ユーザーが[送信]ボタンを押したときにエディタがモデルの値を閉じずに更新しないことです。これはいくらか不満を引き起こす。QAbstractItemViewのエディタを閉じる
私はQtドキュメントを使いましたが、エディタを閉じて変更をコミットする簡単な方法が見つからないようです。これについてどうすればいいですか?
は、あなたが現在使用してそれを閉じることができるはず開かれているアイテムのQModelIndex
を持っているときに、選択モデルやItemView信号またはcurrentIndex()
を通じて、現在開いているアイテムを追跡しなければならないように見えますclosePersistentEditor (const QModelIndex & index)
これは私が使用したものです
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);
}
}
}
openPersistentEditorを使ってエディタを作成した場合にのみclosePersistentEditorが動作すると思いますが、試してみます。 – dirk