使用QGraphicsObject与QGraphicsItem的惩罚?

时间:2010-02-18 20:46:43

标签: qt qt4

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

我想转移到QGraphicsObject,以便我可以在我的项目上放置属性。我不会使用信号/插槽或QObject的任何其他功能。

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

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

由于我添加到我的项目中的所有属性都是属性,如果您使用信号/插槽,QObject只会增加权重吗?

2 个答案:

答案 0 :(得分:3)

我认为这取决于你的体重是什么意思。如果您不担心所需的额外内存,以及QObject附带的所有额外方法和内容,这听起来像是您的情况下的包袱,那么是。

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

答案 1 :(得分:0)

性能怎么样?调用setX / setY时,QGraphicsObject会有额外的成本,依此类推。您可以访问QGraphicsItemPrivate :: setPosHelper并查找更多详细信息。