C++ 向QGraphicsItem添加信号/插槽(QObject):性能命中?
我想向QGraphicsItem添加信号/插槽,以便可以从另一个线程访问QGraphicsItemObjects。我知道有两个选项:使用QGraphicsObject或从QObject和QGraphicsItem继承 使用QGraphicsObject 这被认为是缓慢的。根据OnStackOverflow,QGraphicsObject由于其实现速度较慢。当我查看QGraphicsObject的源时,我可以看到很多信号是根据对对象所做的更改发出的。对我来说,这似乎是一个合理的理由来解释为什么QGraphicsObject很慢,但我认为第二种解决方案可以避免这种性能影响(如果真的是这样的话) 从QObject和QGraphicsItem继承。 当构造一个从QObject和QGraphicsItem继承的类时,似乎您得到了QGraphicsObject最有趣的特性,减去性能影响:您可以在类中定义插槽并发出信号,但您不能继承QGraphicsObject的默认实现,该实现会不断发出更改信号可能不感兴趣。现在,您可以发出信号,但不必担心因您不关心的事情而发出的信号(在QGraphicsObject中改变的x值会发出信号,但在本解决方案中不会) 我的问题摘要C++ 向QGraphicsItem添加信号/插槽(QObject):性能命中?,c++,qt,qt4,C++,Qt,Qt4,我想向QGraphicsItem添加信号/插槽,以便可以从另一个线程访问QGraphicsItemObjects。我知道有两个选项:使用QGraphicsObject或从QObject和QGraphicsItem继承 使用QGraphicsObject 这被认为是缓慢的。根据OnStackOverflow,QGraphicsObject由于其实现速度较慢。当我查看QGraphicsObject的源时,我可以看到很多信号是根据对对象所做的更改发出的。对我来说,这似乎是一个合理的理由来解释为什么QG
- QGraphicsObject真的比QGraphicsSitems慢吗
- 如果是,是因为实现发出信号(而发出信号是 大的性能打击
- 如果是这样,第二种解决方案(多重继承)是否避免了这种惩罚
如果您有许多QGraphicsItem可以共享一个QObject,那么这将比让每个QGraphicsItem继承QObject更轻 您可以更改类继承,如下所示: 类图形按钮:公共QObject、公共QGraphicsItem 然后在课程开始时添加Q_对象 现在,您可以添加信号和插槽
在运行应用程序clean&runqmake之前,我会尝试对其进行评测,看看如果不使用额外发出的信号,是否会对性能产生任何影响。只要它们没有连接到插槽,它们就可能不在那里,对吗?根本的区别是什么(除了这里更具体)关于这个问题:?这两个问题涉及同一个主题,但我确实更具体:我特别感兴趣的是多重继承是否是克服QGraphicsObject产生的开销问题的正确解决方案。分析显然是正确的检查方法。我可以想象,正是QoObject的所有权特性使它们在创建或销毁时变得缓慢。您可能需要考虑一个选项3——将QObjtC类成员放置在QGoLICSITEM中,而不是图形项本身。应该注意,<代码> QGraceCsObjs<代码>本身也继承了从<代码> QObjult<代码>和<代码> QGraceCITEM> 。