代码之家  ›  专栏  ›  技术社区  ›  Mike Shaw

Qt paintEvent()非正常触发

  •  0
  • Mike Shaw  · 技术社区  · 10 年前

    我是Qt初学者。

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

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

    带有插槽:

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

    所以我只想在滑块的值改变时重新绘制Pixmap。但我注意到,每次当我将鼠标移入或移出滑块时,都会触发重新绘制。为什么会发生这种情况?

    谢谢

    3 回复  |  直到 9 年前
        1
  •  2
  •   DmitryARN    10 年前

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

        2
  •  1
  •   Shoe jmarranz    10 年前

    文件 says :

    绘制事件是重新绘制所有或部分小部件的请求。发生这种情况的原因如下:

    • 重新绘制()或更新()被调用,
    • 小部件被遮挡,现在已被打开,或
    • 许多其他原因。

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

        3
  •  0
  •   user339222 user339222    10 年前

    根据您的要求,不要重新实施 paintEvent 然后做你的 QPixmap 当滑块值改变时更新。