0

我是 Qt 初学者。

所以我的 MainWindow 带有 aQSlider和 a QPixmap。我重新定义了paintEvent( QPaintEvent* event )

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

带插槽:

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

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

谢谢。

4

3 回答 3

2

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

于 2014-03-06T10:39:42.217 回答
1

文档

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

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

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

于 2014-03-06T10:39:31.010 回答
0

根据您的要求,然后不要重新实现paintEvent。只需QPixmap在滑块值更改时进行更新。

于 2014-03-06T10:59:24.440 回答