我正在开发一个在嵌入式Linux系统上运行的Qt应用程序。
该系统配有触摸屏,但也有一个OTG USB端口,必须能够使用鼠标。
现在如果我注释掉“setCursor”指令,这样就解决了问题,但是直接编辑Qt源代码来做这件事情有点丑陋,所以如果你有更好的解决方案...
所以我的问题是,当应用程序启动时,在屏幕中央显示鼠标指针,然后当主窗口的绘制事件发生时,它就会消失。
当应用程序启动后,如果插入了鼠标,我可以隐藏/显示光标,这很好,但是在启动过程中始终会有光标。
我尝试过: QWSServer::setCursorVisible(false);
或者: qApp->setOverrideCursor(QCursor(Qt::BlankCursor));
结果与上述描述相同。
我发现唯一的隐藏启动时光标的方法是编译Qt时去除Cursor,但那样就无法在插入鼠标时使用光标(这很合理...)。
所以如果你有什么想法,我会很高兴听到的:-)
谢谢, Sylvain
编辑: 好的,那么这就是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源代码来做这件事情有点丑陋,所以如果你有更好的解决方案...
qApp->exec()
之前,您应该能够在 main.cpp 文件中调用qApp->setOverrideCursor()
,这样启动时就不会看到光标。 - Sebastian Lange