1

編集可能な QTableView + QStandardItemModel を使用しています。

テーブルビューでセルを編集しているときに、新しいデータをテーブルビューにコミットするときに、この特定のセルの新しい入力データに従って何かをしたいと思います。

これを行うには、新しい入力データと現在のモデル インデックス (または列と行の番号) が必要です。私はいくつかのスロットを試しました

virtual void closeEditor (QWidget * エディター、QAbstractItemDelegate::EndEditHint ヒント)

virtual void commitData ( QWidget * editor )。

commitData は必要なもののようですが、パラメーターはエディターのみであり、このエディター ウィジェットでテキストを取得する方法がわかりません。QTextEditを見ましたが、QWidgetの継承クラスではありません。

エディター ウィジェットのデータ (テキスト) と軸 (列、行) を取得する方法はありますか?

4

2 に答える 2

2

独自の項目デリゲート、継承QStandardItemDelegate(またはQAbstractItemDelegate) を実装することをお勧めします。そこでオーバーライドできます

void setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const

カスタム処理を行ってから呼び出しQStandardItemDelegate::setModelData(...)て、モデルが新しく編集されたデータで更新されていることを確認するだけです。

于 2012-10-02T10:13:11.493 に答える
1

itemChanged(QStandardItem*)シグナルは、QStandardItemModelアイテムのデータが変更されるたびに発信されます。

指定されたからQStandardItem、行と列を直接取得できます。表示されたテキストを取得するQt::DisplayRoleには、アイテムのdata()メソッドに渡します。

于 2012-10-02T06:54:39.013 に答える