QTableView
ユーザーがウィジェットセルの編集を開始および終了したときに発行される信号(ドキュメントに何も見つかりません)はありますか?
テーブルモデルからいくつかの関数を実行したいのですが、ユーザーはenyセルの編集を開始し、ユーザーが編集を終了すると別の関数を実行します。これどうやってするの?
QTableView
ユーザーがウィジェットセルの編集を開始および終了したときに発行される信号(ドキュメントに何も見つかりません)はありますか?
テーブルモデルからいくつかの関数を実行したいのですが、ユーザーはenyセルの編集を開始し、ユーザーが編集を終了すると別の関数を実行します。これどうやってするの?
ユーザーが編集を開始/終了するときのアクションは、独自のデリゲートを実装することで実行できます。
また、QAbstractItemModelにはdataChangedシグナルがあります。
dataChangedシグナルの問題は、プログラムでデータを変更するときにも出力されることです(setData)。プログラムがsetData()を呼び出し、スロットがトリガーされるべきでない場合、唯一の解決策は、実際にカスタムデリゲートを実装することです。
QAbstractItemViewには仮想メソッドcommitDataとcloseEditorがありますが、それらはパラメーターとしてインデックスを取りません。currentIndex()が常に正しいかどうかは100%わかりません...(QAIVは永続的なエディターのため、これに依存しません。 、したがって、内部ハッシュがあります)。
QTableViewからクラスを派生させ、関数selectionChangedをオーバーライドして、ユーザーがセルの編集を開始したときに特定の動作を実装し、関数dataChangedをオーバーライドして、セルが変更された後の特定の動作を実装します。
グラファイトが上記で示唆しているように、私は通常、モデルでdataChanged(通常はQSqlTableModel)を使用して、編集がいつ終了したかを調べます。しかし、QTableView自体に、より詳細なユーザーアクションのシグナルを含めることが理にかなっていることに同意します。
connect(model,SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(updatePlot()));