私のプロジェクトではQGraphicsScene
、コード全体で a を使用し、アイテムを追加/削除しています。
QGraphicsItem
が追加または削除されるたびに通知を受け取りたいと思います。多くの Qt クラスには、そのような変更で呼び出される通知シグナルまたは少なくとも仮想関数があります。多くの場所に多くのコード行を追加することを避けようとしていますが、これは面倒であるだけでなく安全でもありません (現在または将来の挿入/削除を忘れる)。
任意の で動作するソリューションが必要QGraphicsItem
です。
これは機能しないもののリストです。
QGraphicsScene
(のようにQAbstractItemModel::rowsInserted()
)の信号に接続します->何もありません。QGraphicsScene
仮想通知関数を継承してオーバーロードする(のようにQTabWidget::tabInserted()
) -> 何もありません。- inherit と overload
addItem()
、自分自身に通知を送信する( のようにQMdiArea::addSubWindow()
) ->addItem
仮想ではなく、 のコンストラクタから呼び出されQGraphicsItems
ます。 - 新しく追加されたイベントフィルターをインストールします
QGraphicsItems
->新しく追加されたアイテムを取得する方法がわかりません。また、sceneEventFilter
それは other にのみインストールできるものになりますQGraphicsItems
。 - connect to
itemChange()
ofQGraphicsItem
->itemChange
はシグナルでQGraphicsItem
はなく、オーバーロードはオプションではありません。 - ラップ
QGraphicsScene
(シーンをプライベート メンバーとして持つ) を行い、関数addItem
とremoveItem
->のみを公開しますがQGraphicsItems
、そのシーンではまだ関数を介してアクセスできるscene()
ため、このソリューションは十分に安全ではありません。
アイテムの変更に関する通知を受け取るにはどうすればよいですか?
私が見逃した簡単な方法があれば、それを教えてください。それ以外の場合は、これに関するアイデアをいただければ幸いです。