在我的项目中,我QGraphicsScene
在整个代码中使用并添加/删除项目。
现在,我想QGraphicsItem
在添加或删除 a 时得到通知。许多 Qt 类具有通知信号或至少是在此类更改时调用的虚拟函数。我试图避免在许多地方添加多行代码,这不仅麻烦而且不安全(现在或将来忘记插入/删除)。
我需要一个适用于任何QGraphicsItem
.
这是不起作用的事情的列表:
- 连接到
QGraphicsScene
(如QAbstractItemModel::rowsInserted()
)的信号-> 没有。 - 继承
QGraphicsScene
并重载一个虚拟通知函数(如QTabWidget::tabInserted()
) -> 没有。 - 继承和重载
addItem()
,自己发送通知(如中QMdiArea::addSubWindow()
) ->addItem
不是虚拟的,而是从QGraphicsItems
. - 在新添加的设备上安装事件过滤器
QGraphicsItems
-> 不知道如何获取新添加的项目,并且它sceneEventFilter
只能安装在其他QGraphicsItems
. - 连接到
itemChange()
ofQGraphicsItem
->itemChange
不是一个信号并且重载QGraphicsItem
不是一个选项。 - wrap
QGraphicsScene
(将场景作为私有成员)并且只公开函数addItem
和removeItem
-> 但QGraphicsItems
在那个场景中仍然可以通过scene()
函数访问它,所以这个解决方案不够安全。
如何获得有关项目更改的通知?
如果有一种我只是错过的简单方法,请指出我。否则,我非常感谢您对此的想法。