Qt for Embedded Linux:在启动时隐藏光标

我正在开发一个Linuxembedded式系统上的Qt应用程序。 该系统有一个触摸屏,但也是一个OTG USB端口,它必须用鼠标才能使用。

所以我的问题是,当应用程序启动时,它会在屏幕中间显示一个鼠标光标,然后当我的主窗口绘画事件发生时消失。

当应用程序启动时,如果插入了鼠标,我可以隐藏/显示光标,这很好,但在启动过程中我总是有光标。

我试过:QWSServer :: setCursorVisible(false);

或者:qApp-> setOverrideCursor(QCursor(Qt :: BlankCursor));

结果与上述相同。

我发现在启动过程中隐藏游标的唯一方法是编译没有游标的Qt,但是当鼠标插入时(逻辑…),我不能有游标。

所以,如果你有一个想法,我会很乐意阅读:-)

谢谢,Sylvain

编辑:Okey这样的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源代码来做这件事很糟糕,所以如果你有更好的解决scheme的话。

这不适用于Qt5 ; 但从这个问题来看,这似乎是与QWS的 Qt4 。 代码序列,

 QWSserver *server = QWSserver::instance(); if(server) { server->setCursorVisible(false); } 

将使用QWSQt4.x协同工作。 重要的一点是,只有服务器可以做到这一点。 即,用-qws调用的-qws 。 如果您运行多个应用程序,客户端将无法禁用游标。

这应该在构建QApplication 之后 ,但在第一个show()showFullScreen()之前完成 。 您可能会尝试在构建QApplication之前执行此操作。

编辑:当你最初显示应用程序的时候,

#define QT_NO_QWS_CURSOR 1添加到MyQconfig文件,并使用-qconfig MyQconfig选项将其传递给./configure 。 或者你可以使用图形工具qconfig来定制Qt。 在工具目录中找到qconfig 。 项目列表可以在src / corelib / global / qfeatures.txt中找到 。 请参阅微调Qt了解更多信息。

 #include <QScreenCursor> QScreenCursor *cursor = new QScreenCursor; cursor->initSoftwareCursor(); cursor->hide();