私のプロジェクトでは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()ため、このソリューションは十分に安全ではありません。
アイテムの変更に関する通知を受け取るにはどうすればよいですか?
私が見逃した簡単な方法があれば、それを教えてください。それ以外の場合は、これに関するアイデアをいただければ幸いです。