gpt4 book ai didi

c++ - 手动在场景上绘制 QPolygonF 会导致更新时出现渲染问题

转载 作者:行者123 更新时间:2023-11-30 05:47:51 26 4
gpt4 key购买 nike

我有一个非常简单的代码,用于在图形顶点之间绘制箭头,灵感来自 Qt 图示例应用程序,但我遇到了渲染工件的问题。当我使用以下代码将三角形多边形绘制到场景上时

QPolygonF arrowHead;
... some setup
painter->drawPolygon(arrowHead);

然后我绕着三角形(arrowHead 多边形)指向的顶点移动,它确实被重新绘制,但旧三角形仍然呈现在屏幕上

render error

关于 scene 的任何更新但是解决了这个问题(在后台拖动,或从另一个地方调用 update/invalidate)。

render ok

问题是我不知道在哪里强制更新,或者如何告诉 Qt 使被拖动的顶点周围的整个区域无效。

我试过调用 scene()->invalidate() (同时更新)来自 itemChange拖动顶点上的事件,但这会导致整个应用程序崩溃,所以我假设我不允许从那里调用更新。我也不能调用 update直接来自 paint箭头的方法,因为它会在它自己的 paint 中无限递归方法。

我是不是渲染不正确,还是我需要以某种方式手动更新场景? Here's a link to the whole rendering source code ,虽然我想我可能在绘画方面犯了一些基本错误。

最佳答案

您没有提供边缘项目的正确边界矩形。您从 QGraphicsLineItem 派生 EdgeGraphicsItem,但您没有覆盖 boundingRect .确保您遵循文档,并且不要错过必要时调用 prepareGeometryChange

关于c++ - 手动在场景上绘制 QPolygonF 会导致更新时出现渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460332/

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