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

标签 linux qt embedded mouse-cursor

我正在 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/

相关文章:

qt - 如何快速统计大量文件

rust - 将 Rust 箱用于 STM32 微 Controller 板

linux - libGLES_CM.so 有什么用?

linux - 如何使用多个参数进行 useradd

c++ - 来自 unsigned char 缓冲区的 QImage(jpg 格式)

c++ - 在 ResizeToContents 模式下调整大小时,QHeaderView 仅考虑当前屏幕上的项目

database - 以 root 以外的其他用户身份运行 Linux 应用程序

ios - 在 Linux 上可以进行 iOS 开发的 CI 吗?

linux - Linux 中的进程,fork 值除以零

linux - 使用 apache 虚拟主机时,谷歌浏览器中的配置 header 显示错误