李水云 2025-10-17 13:26 采纳率: 37.5%
浏览 8

QT怎么手动控制控件重绘

在QWidget中设置setUpdatesEnabled(false);关闭自动重绘
在需要时手动重绘时先设置setUpdatesEnabled(true);然后update();
但是没有update()完成的槽函数,导致无法及时setUpdatesEnabled(false);关闭自动重绘

有没有更好的办法实现,完全由自己控制重绘控件
控件是直接调用QWidget生成,不是通过paintEvent绘制

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-10-17 13:27
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    你好,根据你的问题,我理解你想在QT中手动控制控件的重绘。

    在QWidget中,设置setUpdatesEnabled(false)可以关闭自动重绘,这样可以提高性能。但是,当需要手动重绘时,需要先设置setUpdatesEnabled(true),然后调用update()方法来触发重绘。

    但是,你提到没有update()方法,这是因为QT中没有直接的update()方法。相反,你可以使用repaint()方法来触发重绘。

    所以,正确的步骤是:

    1. setUpdatesEnabled(false)关闭自动重绘
    2. 当需要手动重绘时,设置setUpdatesEnabled(true)
    3. 调用repaint()方法来触发重绘

    例如:

    // 关闭自动重绘
    setUpdatesEnabled(false);
    
    // 需要手动重绘时
    setUpdatesEnabled(true);
    repaint();
    

    希望这个解答能帮助你解决问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 10月17日