我正在 Linux 嵌入式系统上开发 Qt 应用程序。 该系统有一个触摸屏,还有一个 OTG USB 端口,并且必须可以使用鼠标。
所以我的问题是,当应用程序启动时,它在屏幕中间显示一个鼠标光标,然后当我的主窗口绘制事件发生时它消失了。
当应用程序启动时,如果插入鼠标,我可以隐藏/显示光标,效果很好,但在启动期间我总是有光标。
我试过: QWSServer::setCursorVisible(false);
或: qApp->setOverrideCursor(QCursor(Qt::BlankCursor));
结果和上面描述的一样。
我发现在启动期间隐藏光标的唯一方法是在没有光标的情况下编译 Qt,但是当插入鼠标时我不能有光标(这是逻辑......)。
因此,如果您有想法,我很乐意阅读它:-)
谢谢, 西尔万
编辑: 好的,这就是启动时显示光标的 QWS 服务器,我在 qt/src/gui/embedded/qwscursor_qws.cpp 中发现:
void QWSServerPrivate::initializeCursor()
{
Q_Q(QWSServer);
// setup system cursors
#ifndef QT_NO_QWS_CURSOR
// qt_screen->initCursor(sharedram + ramlen,true);
// default cursor
cursor = 0;
setCursor(QWSCursor::systemCursor(Qt::ArrowCursor));
#endif
q->sendMouseEvent(QPoint(swidth/2, sheight/2), 0);
}
现在,如果我注释掉“setCursor”指令,问题就解决了,但是编辑 Qt 源代码来做到这一点有点难看,所以如果你有更好的解决方案...
最佳答案
这不适用于 Qt5;但从问题来看,这似乎是 Qt4 with QWS。代码序列,
QWSServer *server = QWSServer::instance();
if(server) {
server->setCursorVisible(false);
}
将使用 QWS 与 Qt4.x 一起工作。需要注意的重要一点是,只有服务器 可以执行此操作。即,用-qws
调用的程序。如果您运行多个应用程序,客户端将无法禁用光标。
这应该在构造QApplication之后,但在第一个show() 或showFullScreen()之前完成em>。您可能会在构建 QApplication 之前尝试这样做。
编辑:正如您的意思,当应用程序最初显示时,
将#define QT_NO_QWS_CURSOR 1
添加到MyQconfig 文件,并使用-qconfig MyQconfig将其传递给
选项。或者你可以使用图形化工具./configure
qconfig
来自定义Qt。 qconfig
位于工具目录中。在 src/corelib/global/qfeatures.txt 中可以找到项目列表。参见 Fine tuning Qt了解更多。
关于linux - 用于嵌入式 Linux 的 Qt : Hide cursor on startup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18053330/