QGraphicsView RubberBandDrag 留下工件

Posted

技术标签:

【中文标题】QGraphicsView RubberBandDrag 留下工件【英文标题】:QGraphicsView RubberBandDrag leaves artifacts 【发布时间】:2017-11-13 13:24:32 【问题描述】:

我设置了一个 QGraphicsView 和一个 QGraphicsScene,但没有更改任何属性,但是

view->setDragMode(QGraphicsView::RubberBandDrag);
view->setRenderHint(QPainter::Antialiasing, true);

当稍微拖动 arround 时,RubberBandDrag 会留下伪影,并且 RubberBand 本身经常渲染不正确,缺少侧面:

此外,其他图形项(例如常规 QGraphicsRectItem)也会留下这些痕迹。我尝试不使用抗锯齿,但这似乎使情况变得更糟。

我是否必须设置视图/场景的特定属性,例如禁用优化标志?

或者这只是 Qt 的一个错误? (我使用的是 5.9.2) 至少我找不到这方面的报告。

【问题讨论】:

【参考方案1】:

我有类似的问题。在我玩了这两个电话之后,事情就解决了。

QGraphicsView.setCacheMode(QGraphicsView::CacheBackground);

QGraphicsView.setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);

【讨论】:

以上是关于QGraphicsView RubberBandDrag 留下工件的主要内容,如果未能解决你的问题,请参考以下文章

QGraphicsView::NoViewportUpdate 不起作用

在 QGraphicsView 中移动项目

QGraphicsView:如何高效获取QGraphicsItems的视口坐标?

QGraphicsView/QGraphicsScene 渲染问题

从 QGraphicsView 向前按键

滚动其中一个时如何滚动多个QGraphicsView(无滚动条)