0

私は自分のデータ抽象化スキームを使って自分自身をコーナーソートにコーディングしましたが、その結果、ビュー(QTableViewはほぼ排他的に)にeditorOpened(QModelIndex)およびeditorClosed(QmodelIndex)シグナルが必要になりました。

その理由は、私のデータクラスには自動動作があり、編集中にブロック/無効にして、後で再度有効にする必要があるためです。

最初はカスタムデリゲートでそれをやろうと思っていましたが、いくつかの理由で問題が発生しました。1つは、すべてのアイテムに同じ動作を提供するカスタムデリゲートを使用するのは少し過剰に思えるということです。つまり、次のようになります。ビュー自体によってすべてのアイテムに対して実行する必要があります。2番目の問題は、デリゲートが、constデリゲート内のデータオブジェクトに内部ハンドルを設定できないように見えることです。

ビューメソッドを見ると、QAbstractItemView::editとQAbstractItemView::closeEditorが見つかりました。これらは、opened()およびclosed()シグナルを使用して再実装するのに最適な候補ですが、編集中の特定のアイテムへのインデックス/ハンドルが必要です。それらの方法の中からは得られないと思います...

この時点で、他に何ができるかわかりません。正しい方向へのヒントや指針をいただければ幸いです。読んでくれてありがとう

4

1 に答える 1

1

自力で解決した...

const ではない QAbstractItemDelegate::editorEvent を見つけました (以前にドキュメントを読んだときに思ったほど詳しく調べていなかったに違いありません)。

このメソッド内のカスタム デリゲートに内部ハンドルを設定することができました。これにより、閉じたときに必要なことを実行するスロットを簡単に作成し、closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint) シグナルをそれに接続することができました。

于 2012-07-07T15:42:45.503 に答える