2017-03-06 49 views
1

enter image description hereQGraphicsItem paint延迟

这可能是什么原因造成的?当我放大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) 

为什么会出现这种情况,即使对于这个基本的油漆事件?如果没有Pen,则不会看到此问题。如果我增加笔宽,这个问题令人不安。

回答

0

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

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

昨天我研究过这一点,我怀疑这是由于视图需要以某种方式通知它需要更新,却不见什么“正确”的方法了。据推测,当物品有更新()调用时,他们发出信号,他们属于重绘视图? –

+0

事实上,我上面贴的mouseMoveEvent属于视图。由于只有在选择了某些东西时才出现伪影,因此在鼠标移动期间(当存在活动选择时)更新视图确实可以解决问题。但是,我仍然不明白为什么会发生这种情况。正如我上面提到的那样,没有笔的时候绝对没有问题 – vaishak