You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac 13系统QT应用中如何防止按下空格键时鼠标光标消失

MacOS 13.3 + Qt 6.3.1 按键导致鼠标光标消失的解决方法

用户提供的测试代码:

int main(int argc, char* argv[]) {
    int c = 0;
    QApplication app(c, nullptr);
    QMainWindow w;
    w.show();
    return app.exec();
}

在MacOS 13.3系统上使用Qt 6.3.1运行上述代码时,按下空格键、字母或数字键会导致鼠标光标消失,以下是几种可行的解决方式:

  • 给主窗口添加带焦点的中心部件
    问题根源是QMainWindow默认没有可接收焦点的部件,按键时系统会认为窗口不需要光标从而隐藏它。给窗口添加一个中心部件并设置强焦点策略即可解决:

    int main(int argc, char* argv[]) {
        int c = 0;
        QApplication app(c, nullptr);
        QMainWindow w;
        
        QWidget* centralWidget = new QWidget(&w);
        centralWidget->setFocusPolicy(Qt::StrongFocus);
        w.setCentralWidget(centralWidget);
        
        w.show();
        return app.exec();
    }
    
  • 强制保持光标可见
    可以通过重写窗口的按键事件,每次按键后重置光标状态,确保光标始终显示:

    #include <QMainWindow>
    #include <QKeyEvent>
    
    class MyMainWindow : public QMainWindow {
    protected:
        void keyPressEvent(QKeyEvent* event) override {
            QMainWindow::keyPressEvent(event);
            setCursor(Qt::ArrowCursor);
        }
    };
    
    int main(int argc, char* argv[]) {
        int c = 0;
        QApplication app(c, nullptr);
        MyMainWindow w;
        
        w.show();
        return app.exec();
    }
    

    或者直接在窗口初始化后强制设置光标:

    w.setCursor(Qt::ArrowCursor);
    
  • 升级Qt版本
    该问题大概率是Qt 6.3.1与MacOS 13.3的兼容性bug,升级到Qt 6.4及以上的版本,官方可能已经修复了这个光标隐藏的异常问题。

内容的提问来源于stack exchange,提问作者Enoch.Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:50:22