c++ - 调用 CGPathAddArc 时 PyQt4/Qt 中止陷阱的原因是什么?

标签 c++ qt pyqt pyqt4 osx-mavericks

升级到 Mavericks 后,使用 PyQt 4.10.4、Qt 4.8.5、python 2.7.5,我试图重建 PyQt 应用程序并遇到以下中止陷阱:

Assertion failed: (CGFloatIsValid(x) && CGFloatIsValid(y)), function void CGPathAddArc(CGMutablePathRef, const CGAffineTransform *, CGFloat, CGFloat, CGFloat, CGFloat, CGFloat, bool), file Paths/CGPath.cc, line 279.
Abort trap: 6

这是 issue反射(reflect)出 Mavericks 上的 CGPathAddArc 拒绝来自 Qt 的 NaN 值(在 Snow Leopard 上它曾经容忍/警告)。有一个 patch这看起来不错,但应用它需要重建 Qt 和 PyQt,我无法让它为我工作。

faultHandler 没有给出任何细节,并且 runsnake 没有输出,因为应用程序异常终止。

这显然是一个 UI 元素,但我如何找到哪个元素?

最佳答案

罪魁祸首是声明时没有参数的 QGraphicsEllipseItem()。 Qt 4.8 documentation暗示 no params 是一个有效的构造函数,但显然在 Mavericks 中并非如此。

用虚拟 x 和 y 参数声明 QGraphicsEllipseItem 解决了这个问题。

关于c++ - 调用 CGPathAddArc 时 PyQt4/Qt 中止陷阱的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375804/

相关文章:

c++ - 析构函数调用和指针

c++ - 使用 Opencv 从 Macbook Pro iSight 捕获

c++ - C++字典?

python - 创建自定义类QPointF

python - PyQt:为什么弹出对话框会阻止其他代码的执行?

c++ - 模板化 std::future 返回问题

linux - 当我将我的QT版本从4.8.6升级到4.8.7时,widget列表会失去焦点

qt - 如何在Qt中使d指针正确

c++ - 使用 Qt 应用程序翻译 native 操作系统文件对话框

python - PyQt/PySide 中是否需要 deleteLater()?