How to hide mouse pointer on startup?
我有一个运行 linux 的嵌入式触摸屏,我的应用是 Qt/C。
我使用如下所示的函数 main 启动应用程序:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <QApplication>
#include <QThread> #include <stdlib.h> int main(int argc, char *argv[]) // Hide the pointer // Create main window // Set up the UI and execute the App // tidy up |
我遇到的问题是,当我运行程序时,光标会显示出来。但是一旦我触摸屏幕(该应用程序是全屏应用程序),光标就会消失。
我已经读到这可能是一个简单的焦点问题 – 即我的应用程序没有焦点或类似问题。如何确保我的应用在启动时成为焦点?
或
隐藏鼠标指针是不是我做错了什么?
—编辑—
如果我删除 app.setOverrideCursor( QCursor( Qt::BlankCursor ) ); 行,那么我将专注于我的应用程序。所以这条线不知何故让我的应用失去了焦点。
因此,作为一个快速的技巧,我在 MainWindow 中放置了一个 QTimer 并将其设置为 100 毫秒(这样它只会在事件处理开始后得到处理 – 即在 app.execute() 之后)。然后我将计时器事件连接到我称之为 “getFocusOnMeNow()” 的插槽函数,其中我有:
1
2 |
this–>activateWindow();
this–>setFocus(); |
这行得通。
所以现在我想整理一下。我可以在 MainWindow 中调用 app.execute() 之后的哪些函数/插槽来获得焦点?我没有看到可以重载的 MainWindow::start() 插槽…?
- 如果您认为是这种情况,是否将光标隐藏在窗口的 showEvent 中?
- @peppe 我不认为这是这里的问题。”setOverrideCursor”将光标设置为对我的应用程序不可见。如果这是一个焦点问题,在窗口显示事件中做同样的事情不会改变任何事情,因为我仍然需要专注于我的应用程序:(除非你完全在谈论不同的方法?
- 然后强制窗口尽快获得焦点(activateWindow() 等)
- @peppe 是的,但这是我的问题,我如何在启动时专注于我的窗口……我尝试了 activateWindow() 和 setFocus,但也没有。即使在我的 Windows 模拟器程序上,该应用程序在运行后也没有成为焦点……
试试
1
|
app.setCursorVisible(false);
|
这对你有帮助吗。
- 谢谢你,我正在运行 Qt 4.6 并且该应用程序似乎没有该功能:(
- 所有应用程序类都没有 setCursorVisible 方法。这过去可以通过 QWSServer 用于嵌入式 Linux。从 Qt 5.0 开始,QWS 不再是受支持的平台。
来源:https://www.codenong.com/20219036/