大佬教程收集整理的这篇文章主要介绍了qt – 为什么在销毁它之前从它的场景中删除一个QGraphicsItem更有效率?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是为什么?我不能想像如何才能有所作为.而如果它确实有所作为,那么QGraphicsItem析构函数应该不会调用:
if (scene() != NULL) scene()->removeItem(this);
我检查了源码,这似乎并不是这样,虽然有时候我很难理解Qt源码.编辑:见jdi的回答.
我认为这是因为它会在摧毁之前首先从场景中删除,因为这样更有效率.但是如果你说来源不表示发生这种情况,那么文件似乎是假的?
如果我不得不猜测为什么在摧毁它之前首先删除该项目会更有效(不管API是否真的为您在析构函数中执行),我认为这将与什么触发器有关reindex的场景.也许通过删除仍在场景中的项目,子项目的级联删除会不断地触发场景重新索引.而如果您要先删除该项目,则可以以仅需要单次更新场景的方式有效地拉出整个层次结构,然后可以进行正常删除而不会进一步影响?在场景中删除其他子事件/信号甚至可能会有更多的级联效应.
我注意到“注意”背后的逻辑是通知那些将子类化QGraphicsItem并重载析构函数的人,以便记住需要首先从场景中删除.
以上是大佬教程为你收集整理的qt – 为什么在销毁它之前从它的场景中删除一个QGraphicsItem更有效率?全部内容,希望文章能够帮你解决qt – 为什么在销毁它之前从它的场景中删除一个QGraphicsItem更有效率?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。