首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt-移动QGraphicsItem会导致artifacts.Leaves跟踪落后

Qt-移动QGraphicsItem会导致artifacts.Leaves跟踪落后
EN

Stack Overflow用户
提问于 2019-05-22 22:56:08
回答 1查看 230关注 0票数 1

当我移动一个QGraphicsItem时,奇怪的工件停留在项目的behind.Some部分不呈现,其他呈现...在note.cpp中,我有一个形状

代码语言:javascript
复制
QPainterPath Note::shape()const{
   QPainterPath path;
   //    path.addRect(0, 0, 50, 20);
   path.moveTo(0, -80.0);
   path.lineTo(0.0, 80.0);
   path.lineTo(80.0, 0.0);
   //    path.lineTo(75.0, -30.0);
   path.closeSubpath();
   return path;
}

在paint函数中

代码语言:javascript
复制
QPointF *points = new QPointF[3];
points[0] = QPointF(0,-80);
points[1] = QPointF(0,80);
points[2] = QPointF(80,0);
painter->drawPolygon(points,3);

第一张图片显示当我启动应用程序时,一切都很好。第二张图片显示,当我用鼠标移动一个三角形时,它得到了sliced.Other时间,它留下了一些痕迹,并且没有渲染三角形的所有部分。这里是项目的github链接。Github link

要复制,只需移动一个三角形即可。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-22 23:14:31

为了提高效率,QGraphicsItem仅重绘返回boundingRect()方法的部分,在本例中,由于坐标(0, -80)位于boundingRect之外,因此QRect(0, 0, 80, 80)仅返回所需区域的一半。解决方案是:

代码语言:javascript
复制
QRectF Note::boundingRect() const {
    return QRectF(0, -80, 80, 160) ;
    // or
    // return shape().boundingRect();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56259690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档