Qt 使用QGraphicsObject与QGraphicsItem的惩罚?

Qt 使用QGraphicsObject与QGraphicsItem的惩罚?,qt,qt4,Qt,Qt4,我目前有一个基于QGraphicsItem的项目层次结构 我想换成QGraphicsObject,这样我就可以在我的项目上放置属性了。我不会使用QObject的信号/插槽或任何其他功能 我被告知不应该从QObject派生,因为它“重”和“慢” 为了测试这种影响,我从QGraphicsObject派生,在我的项目中添加一些属性,并查看正在运行的应用程序的内存使用情况。我使用这两种风格创建了1000个项目,但我没有注意到内存使用量增加了10k 由于我添加到项目中的所有内容都是属性,因此可以安全地说,

我目前有一个基于QGraphicsItem的项目层次结构

我想换成QGraphicsObject,这样我就可以在我的项目上放置属性了。我不会使用QObject的信号/插槽或任何其他功能

我被告知不应该从QObject派生,因为它“重”和“慢”

为了测试这种影响,我从QGraphicsObject派生,在我的项目中添加一些属性,并查看正在运行的应用程序的内存使用情况。我使用这两种风格创建了1000个项目,但我没有注意到内存使用量增加了10k


由于我添加到项目中的所有内容都是属性,因此可以安全地说,如果您使用信号/插槽,QObject只会增加重量吗?

我认为这取决于您所指的重量。如果您不担心所需的额外内存,也不担心
QObject
附带的所有额外方法和东西,这些听起来像是您的行李,那么您可以


但是,如果您只需要一种存储一些附加信息的方法,为什么不将QGraphicsItem子类化并添加一两个方法来存储必要的数据呢?通过这样做,我认为您将更好地传达代码的意图,这似乎比上述所有内容都更重要。

性能如何?当调用setX/setY等时,QGraphicsObject会有额外的开销。您可以转到QGraphicsSiteMPrivate::setPosHelper并查找更多详细信息