如何在启动时隐藏鼠标指针

How to hide mouse pointer on startup?

本文关键字:隐藏 鼠标指针 启动      更新时间:2023-10-16

我有一个运行linux的嵌入式触摸屏,我的应用程序是Qt/C++。

我启动应用程序的主要功能如下:

#include <QApplication>
#include <QThread>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    // Create the app
    QApplication app(argc, argv);
    // Hide the pointer
    app.setOverrideCursor( QCursor( Qt::BlankCursor ) );
    // Create main window
    MainWindow *window = new MainWindow;
    // Set up the UI and execute the App
    window->show();
    app.exec();
    // tidy up
    delete(window);
    return 0;
}

我遇到的问题是,当我运行程序时,光标会显示出来。但我一触摸屏幕(该应用程序是全屏应用程序),光标就会消失。

我读到这可能是一个简单的焦点问题,即我的应用程序不在焦点上或诸如此类。如何确保我的应用程序在启动时成为焦点?

我把鼠标指针藏起来有什么不对吗?

---编辑---

如果我删除app.setOverrideCursor( QCursor( Qt::BlankCursor ) );行,那么我就可以专注于我的应用程序。所以这句话让我的应用程序失去了焦点。

因此,作为一个快速破解,我在主窗口中放置了一个QTimer,并将其设置为100ms(这样只有在事件处理开始后,即app.execute()之后,它才会被处理)。然后,我将计时器事件连接到一个插槽函数,我称之为"getFocusOnMeNow()",其中我有:

this->activateWindow();
this->setFocus();

这是有效的。

所以现在我想整理一下。在MainWindow中,我可以调用什么函数/槽来获得焦点?我没有看到可以过载的MainWindow::start()插槽。。。?

尝试

app.setCursorVisible(false);

这对你有帮助吗?