我正在Linux嵌入式系统上开发Qt应用程序。
该系统具有触摸屏,但也具有OTG USB端口,必须与鼠标一起使用。

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

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

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

要么:
qApp-> setOverrideCursor(QCursor(Qt::BlankCursor));

结果与上述相同。

我发现在启动过程中隐藏光标的唯一方法是在不使用Cursor的情况下编译Qt,但是然后在插入鼠标时我没有光标(这是逻辑...)。

因此,如果您有想法,我很乐意阅读:-)

谢谢,
西尔万

编辑:
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源代码来执行此操作有点难看,因此,如果您有更好的解决方案...

最佳答案

这不适用于Qt5;但是从问题上看,这似乎是Qt4和 QWS 。代码序列

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

将通过和QWS 与Qt4.x一起使用。需要注意的重要一点是,只有服务器可以执行此操作。即,使用-qws调用的程序。如果您运行多个应用程序,则客户端将无法禁用光标。

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

编辑:似乎是在应用程序最初显示时,

#define QT_NO_QWS_CURSOR 1添加到MyQconfig文件中,然后使用./configure选项将其传递给-qconfig MyQconfig。或者,您可以使用图形工具qconfig自定义Qt。 qconfig在工具目录中找到。在src/corelib/global/qfeatures.txt中可以找到项目列表。有关更多信息,请参见Fine tuning Qt

10-04 10:01