【问题标题】:Qt paintEvent() unnormally triggeredQt paintEvent() 异常触发
【发布时间】:2014-03-06 10:34:09
【问题描述】:

我是 Qt 初学者。

所以我的 MainWindow 带有 QSliderQPixmap。我重新定义了paintEvent( QPaintEvent* event )

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

带槽:

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

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

谢谢。

【问题讨论】:

    标签: c++ qt qpainter paintevent


    【解决方案1】:

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

    【讨论】:

    • 好的。但是如果我想限制重绘以获得更好的性能。没有必要吗?还是人们只是不这样做?
    • 但如果我想限制重绘 不要那样做,Qt 绘图系统相当好(但当然不理想)。在 linux 上你可以试试“光栅”图形引擎,它比原生的要快得多。
    • 好的。谢谢你的回答。
    【解决方案2】:

    文档says:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多