Syl*_*n V 4 linux embedded qt cursor
我正在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);
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我评论"setCursor"指令,那就解决了问题,但编辑Qt源代码要做到这一点很难看,所以如果你有更好的解决方案......
这不适用于Qt5 ; 但从问题来看,这似乎是Qt4与QWS.代码序列,
QWSServer *server = QWSServer::instance();
if(server) {
server->setCursorVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
将使用QWS与Qt4.x一起使用.需要注意的一点是,只有服务器才能这样做.即,程序调用.如果您运行多个应用程序,客户端将无法禁用光标.-qws
这项工作应后的QApplication的构造,但在此之前的第一个节目()或showFullScreen() .您可能会在构建QApplication之前尝试执行此操作.
编辑:正如您在应用程序最初显示时的意思,
添加#define QT_NO_QWS_CURSOR 1到MyQconfig文件并./configure使用该-qconfig MyQconfig选项传递给它.或者您可以使用图形工具qconfig来自定义Qt. qconfig可以在tools目录中找到.可以在src/corelib/global/qfeatures.txt中找到项目列表.有关详细信息,请参阅微调Qt.