gpt4 book ai didi

linux - 用于嵌入式 Linux 的 Qt : Hide cursor on startup

转载 作者:IT王子 更新时间:2023-10-29 01:01:17 24 4
gpt4 key购买 nike

我正在 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);
}

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

这应该在构造QApplication之后,但在第一个show()showFullScreen() 。您可能会在构建 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com