4

我正在 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 源代码来做到这一点有点难看,所以如果你有更好的解决方案......

4

2 回答 2

6

这不适用于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 1MyQconfig文件并./configure使用-qconfig MyQconfig选项将其传递给。或者您可以使用图形工具qconfig来自定义 Qt。 qconfig在工具目录中找到。在src/corelib/global/qfeatures.txt中可以找到项目列表。有关更多信息,请参阅微调 Qt

于 2013-08-06T14:14:43.597 回答
2
#include <QScreenCursor>
QScreenCursor *cursor = new QScreenCursor;
cursor->initSoftwareCursor();
cursor->hide();
于 2016-02-12T11:05:45.570 回答