把嘎嘎 2025-02-17 18:40 采纳率: 43.9%
浏览 12

嵌入式qt界面频繁隐藏显示鼠标导致鼠标箭头卡住不动

嵌入式arm Linux qt界面,qt版本5.9.8,使用setOverrideCursor(Qt::BlankCursor)来隐藏鼠标,使用restoreOverrideCursor()来显示鼠标,频繁调用这两个接口来隐藏显示鼠标会导致某一次隐藏鼠标没有成功,然后鼠标箭头卡住不动,只有点击鼠标右键才会恢复,这是什么原因?

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-02-17 18:40
    关注

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

    嵌入式Qt界面频繁隐藏显示鼠标导致鼠标箭头卡住不动

    你遇到的问题是,嵌入式Qt界面频繁隐藏和显示鼠标,导致鼠标箭头卡住不动。这个问题可能是由于Qt的cursor override机制引起的。

    在Qt中,使用setOverrideCursor(Qt::BlankCursor)可以隐藏鼠标,但是如果你频繁地隐藏和显示鼠标,可能会导致cursor override机制的缓存问题,导致鼠标箭头卡住不动。

    一种解决方案是,使用restoreOverrideCursor()方法来显示鼠标时,先调用flush()方法来刷新cursor override缓存,然后再显示鼠标。代码如下:

    void MyWidget::hideMouse() {
        setOverrideCursor(Qt::BlankCursor);
    }
    
    void MyWidget::showMouse() {
        flush(); // 刷新cursor override缓存
        restoreOverrideCursor();
    }
    

    另外,你也可以尝试使用QApplication::overrideCursor()方法来隐藏和显示鼠标,这个方法可以避免cursor override机制的缓存问题。

    void MyWidget::hideMouse() {
        QApplication::overrideCursor(Qt::BlankCursor);
    }
    
    void MyWidget::showMouse() {
        QApplication::overrideCursor();
    }
    

    这些解决方案可以帮助你解决鼠标箭头卡住不动的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月17日