当我移动一个QGraphicsItem时,奇怪的工件停留在项目的behind.Some部分不呈现,其他呈现...在note.cpp中,我有一个形状
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函数中
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
要复制,只需移动一个三角形即可。
发布于 2019-05-22 23:14:31
为了提高效率,QGraphicsItem仅重绘返回boundingRect()方法的部分,在本例中,由于坐标(0, -80)位于boundingRect之外,因此QRect(0, 0, 80, 80)仅返回所需区域的一半。解决方案是:
QRectF Note::boundingRect() const {
return QRectF(0, -80, 80, 160) ;
// or
// return shape().boundingRect();
}https://stackoverflow.com/questions/56259690
复制相似问题