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
相关产品推荐
相关产品推荐

