Qt for Embedded Linux:在启动时隐藏光标

时间:2013-08-05 08:04:41

标签: linux qt cursor embedded

我正在Linux嵌入式系统上开发一个Qt应用程序。 该系统有一个触摸屏,但也有一个OTG USB端口,它必须可以用鼠标。

所以我的问题是,当应用程序启动时,它会在屏幕中间显示一个鼠标光标,然后当我的主窗口绘制事件发生时它会消失。

当应用程序启动时,如果插入鼠标,我可以隐藏/显示光标,效果很好,但我在启动时总是有光标。

我试过了:     QWSServer :: setCursorVisible(假);

或:     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);
}

现在,如果我评论“setCursor”指令,那就解决了问题,但编辑Qt源代码要做到这一点很难看,所以如果你有更好的解决方案......

2 个答案:

答案 0 :(得分:6)

这不适用于 Qt5 ;但问题似乎是 Qt4 QWS 。代码序列,

QWSServer *server = QWSServer::instance();
if(server) {
    server->setCursorVisible(false);
}

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

构建 QApplication 之后,但在第一个 show() showFullScreen()之前 EM>。您可能会在构建 QApplication 之前尝试执行此操作。

编辑:正如您在应用程序最初显示时所说的那样,

#define QT_NO_QWS_CURSOR 1添加到 MyQconfig 文件,并使用./configure选项将其传递给-qconfig MyQconfig。或者您可以使用图形工具qconfig来自定义Qt。 qconfig位于tools目录中。项目列表位于 src / corelib / global / qfeatures.txt 中。有关详情,请参阅Fine tuning Qt

答案 1 :(得分:2)

#include <QScreenCursor>
QScreenCursor *cursor = new QScreenCursor;
cursor->initSoftwareCursor();
cursor->hide();