【问题标题】:Any reason a QGraphicsItem.setRotation could ever go wrong?QGraphicsItem.setRotation 可能出错的任何原因?
【发布时间】:2015-10-29 07:28:27
【问题描述】:

[提供的最小化代码示例和问题已编辑]

我在这里订阅了一个看似简单的问题(见标题,以及下面的更多描述),但来自于数小时的错误跟踪一直到通常最无害的方法,以及几分钟的敬畏想知道什么技术上可能会发生。

上下文

不同窗口中的两个 QGraphicsView+Scene 对和一个简单的 QGraphicsItem 层次结构。

问题

应用程序在示例中给出的任一 setRotation 上冻结。

一个最小的文件集被推送到Git repos 的“调试”分支,因此您可以下载快照并体验问题。 [认真缩小规模:-p“173个文件更改,356个插入(+),2763256个删除(-)”]

备注

  • 如果您在 GUI.graphics.contact 模块中注释掉两个 setRotation 行(66 和 95,标有“#FIXME”),您将获得一个正在运行的程序,您可以在其中轻松地滚入/滚出和平移场景.
  • 如果您注释掉新窗口的创建(GUI.main 中的第 17 行),冻结也会消失。
  • 如果项目不在视图中,则不会冻结。

尝试解决

  • 将 setRotation 移到 paint 方法之外并从 parentItem 设置,但仍会冻结,因此从 paint 方法调用不是问题。
  • QMutexing setRotations 并没有改变任何东西(绝望中你尝试有趣的事情!)

问题

当然,您可能只是确切地知道我应该对我的程序做什么,但如果不知道,我想解决一个简单的问题:如果我输入了“x”float 并尽可能有创意,那么可能会做什么调用 .setRotation(x) 来冻结程序?

谢谢你。

【问题讨论】:

  • 欢迎来到 SO。请注意,为了帮助您,可能很少有人愿意下载并浏览您的整个项目。我建议您阅读How to ask a good question,它建议您包含足够的代码以允许其他人重现问题How to Create a Minimal, Complete and Verifiable example。然后,适当地编辑您的问题。
  • 我花了这么多时间来指责最不可疑的方法,我当时不想这样做。我宁愿希望我能得到“简单”问题的答案,只将代码提供给核心测试人员。但今天早上我鼓起勇气,就在这里。您可以下载这次只有几个文件的新快照。谢谢。

标签: qt pyqt qt5 qgraphicsitem


【解决方案1】:

解决了!

(由于这里没有讨论,答案来自其他地方,删除这个问题会更好吗?无论如何这里,人们可能正在看这个帖子。)

答案可以在here找到。

【讨论】:

    猜你喜欢
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2017-02-20
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多