Mar*_*ngs 10 notifications qt signals qgraphicsitem qgraphicsscene
在我的项目中,我正在使用a QGraphicsScene并在代码中添加/删除项目.
现在,我想QGraphicsItem在添加或删除时收到通知.许多Qt类具有通知信号或至少被调用此类更改的虚函数.我试图避免在许多地方添加许多行代码,这不仅麻烦而且不安全(忘记现在或将来的插入/删除).
我需要一个适用于任何方案的解决方案QGraphicsItem.
这是一个不起作用的事情列表:
QGraphicsScene (如QAbstractItemModel::rowsInserted())的信号- >没有.QGraphicsScene并重载虚拟通知程序函数(如QTabWidget::tabInserted()) - >没有.addItem(),自己发送通知(如QMdiArea::addSubWindow()) - > addItem不是虚拟的,并从构造函数中调用QGraphicsItems.QGraphicsItems- >不知道如何获取新添加的项目,它将sceneEventFilter只能安装在其他项目上QGraphicsItems.itemChange()的QGraphicsItem- > itemChange是不是一个信号和重载QGraphicsItem是不是一种选择.QGraphicsScene(将场景作为私有成员)并且只显示函数addItem和removeItem- >但是QGraphicsItems在那个场景中仍然可以通过scene()函数访问它,所以这个解决方案不够安全.如何获得有关项目更改的通知?
如果有一个我错过的简单方法,请指出我.另外,我非常欣赏这方面的想法.
我认为你能做的最好的事情就是连接到QGraphicsScene::changed()信号。
它不会告诉您更改/添加/删除了哪些项目,因为它旨在QGraphicsView更新显示。但您应该能够使用提供的区域找到答案。
| 归档时间: |
|
| 查看次数: |
1433 次 |
| 最近记录: |