1

我有QGraphicsObject一个自定义paint()方法,显示在一个太小而无法完整显示的窗口中。当我使用底部滚动条滚动时,不是画一个应该画的矩形,而是paint.drawRect()画一个三角形。

似乎这只发生在我一直滚动到左下角时 - 没有其他角落受到影响。如果我最大化窗口并将其恢复到原始大小,然后再试一次,它可以正常工作并且没有出现对角线。

截屏

这里有一些测试代码。按 + 和 - 键分别放大和缩小。

我很困惑。这是一个错误,还是我在这里遗漏了什么?我能做些什么来解决这个问题?

我在 PySide 1.2.1、Python 3.3.2 和 Windows 8 上。

4

1 回答 1

0

我在运行 Qt 示例“弹性节点”时也遇到过同样的情况,这是图形视图示例之一。您可以通过放大(使用“+”或鼠标滚轮)再现对角线,直到边框矩形超出可见区域。

解决方法:停用后台缓存(graphwidget.cpp,构造函数,删除“setCacheMode(CacheBackground);”行),编译,运行 => 没有对角线。

顺便说一句,我使用的是 Qt 4.8.5。

我刚刚查看了 Qt 错误跟踪器,发现 QTBUG-31579,当使用笔宽为 0 时会绘制意外的东西,所以我尝试通过使用 1 pt 宽度的显式笔绘制矩形来修改弹性节点示例,即使启用了后台缓存,这也给了我预期的结果。由于他们似乎正在解决这个问题,因此应该在下一个 Qt 版本中解决。

冰糕,如果您需要更快的解决方案,您可以尝试在绘图时设置一个非零的显式笔。

希望这对你有用。

于 2013-10-13T09:03:29.043 回答