gpt4 book ai didi

c++ - 将信号/插槽(QObject)添加到 QGraphicsItem : performance hit?

转载 作者:IT老高 更新时间:2023-10-28 22:36:36 25 4
gpt4 key购买 nike

我想向 QGraphicsItem 添加信号/插槽,以便我可以从另一个线程访问 QGraphicsItemObjects。我知道有两个选项:使用 QGraphicsObject 或从 QObject 和 QGraphicsItem 继承。

使用 QGraphicsObject

这被认为很慢。根据this answer在 stackoverflow 上 QGraphicsObjects 很慢,因为它们的实现。当我查看 QGraphicsObjects 的源代码时,我可以看到根据对对象所做的更改发出了很多信号。对我来说,这似乎是为什么 QGraphicsObjects 速度慢的一个合理论据,但我认为第二种解决方案可以避免这种性能损失(如果确实如此的话)。

继承自 QObject 和 QGraphicsItem。

当构造一个继承自 QObject 和 QGraphicsItem 的类时,您似乎获得了 QGraphicsObject 最有趣的特性减去性能损失:您可以在您的类中定义槽并发出信号,但您不继承默认实现的 QGraphicsObject 将在您可能不感兴趣的更改上不断发出信号。您现在可以发出信号,但不必担心会为您不关心的事情发出信号(x 值更改会发出信号在 QGraphicsObject 但不在此解决方案中)。

我的问题总结

  • QGraphicsObjects 真的比 QGraphicsItems 慢吗?
  • 如果是,是不是因为实现会发出信号(而发出信号是性能大受打击)?
  • 如果是这样,第二种解决方案(多重继承)是否可以避免这种惩罚?

最佳答案

This thread建议另一种选择:创建一个 QObject 子类以代表您的 QGraphicsItems 发出信号。

如果你有很多 QGraphicsItem 可以共享一个 QObject,那么这将比让每个 QGraphicsItem 继承 QObject 更轻量。

关于c++ - 将信号/插槽(QObject)添加到 QGraphicsItem : performance hit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com