Qt paintEvent()被异常触发

时间:2014-03-06 10:34:10

标签: c++ qt qpainter paintevent

我是Qt初学者。

所以我的MainWindow有一个QSlider和一个QPixmap。我重新定义了paintEvent( QPaintEvent* event )

connect( slider, SIGNAL(valueChanged(int)), this, SLOT(centerChange(int)) );

带插槽:

void MainWindow::centerChange(int value)
{
    center = value;
    update();
}

所以我只想在滑块的值改变时重新绘制Pixmap。但是我注意到,每当我对滑块进行鼠标输入或鼠标移出时,都会触发重绘。为什么会这样?

感谢。

3 个答案:

答案 0 :(得分:2)

可以由底层Qt绘图系统随时触发绘制事件。您不应该假设只有您才能触发绘制事件。您需要更改应用中的逻辑。

答案 1 :(得分:1)

文档says

  

绘制事件是重新绘制全部或部分窗口小部件的请求。它可能由于以下原因之一而发生:

     
      
  • 调用了repaint()或update(),
  •   
  • 小部件被遮挡,现在已被发现,或
  •   
  • 许多其他原因。
  •   

(强调我的)。具体来说,底层操作系统可以在任何时候触发重绘事件。

答案 2 :(得分:0)

根据您的要求,请勿重新实施paintEvent。只需在滑块值更改时进行QPixmap更新。