QGraphicsItem喷漆延迟

2024-04-24 23:28:37 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here

可能的原因是什么?当我放大QGraphicsView并移动QGraphicsItem时,我得到了这个奇怪的结果。如果我再次缩放或平移视图,或者集中在其他小部件上,它确实会更新。我正在使用PySide。画家的作用是

def paint(self, painter, option, widget):
    if self.isSelected():
        brush = self.highlight_brush
        pen = self.highlight_pen
    else:
        brush = self.dormant_brush
        pen = self.dormant_pen

    painter.setBrush(brush)
    painter.setPen(pen)

    painter.drawRect(0, 0, 100, 100)

为什么即使在这个基本的绘画活动中也会发生这种情况?如果没有笔,就看不出这个问题。如果我增加了笔的宽度,这个问题是显而易见的。在


Tags: self视图部件def原因pysidepaint画家
2条回答

我不知道这个渲染工件的实际解决方案。但是,在mouseMoveEvent期间更新视图确实解决了这个问题。在

 def mouseMoveEvent(self, event):
    QGraphicsView.mouseMoveEvent(self, event)
    if self.scene().selectedItems():
        self.update()

您看到的错误可能是因为您正在绘制的部分超出了边界矩形。我的猜测是你用相同的值来计算你正在绘制的矩形,就像你计算边界矩形一样。然后使用钢笔将使绘制的矩形比边界更宽,因此会导致您看到的污迹。在

相关问题 更多 >