在我的项目中,我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()函数访问它,所以这个解决方案不够安全。
如何获得有关项目更改的通知?
如果有一种我只是错过的简单方法,请指出我。否则,我非常感谢您对此的想法。