加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 01:18:47 所属栏目:Linux 来源:网络整理
导读:我正在 linux嵌入式系统上开发一个Qt应用程序. 该系统有一个触摸屏,但也有一个OTG USB端口,它必须与鼠标一起使用. 所以我的问题是,当应用程序启动时,它会在屏幕中间显示一个鼠标光标,然后当我的主窗口绘制事件发生时它会消失. 当应用程序启动时,如果插入鼠标
我正在 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源代码要做到这一点很难看,所以如果你有更好的解决方案……

解决方法

这不适用于Qt5;但从问题来看,这似乎是Qt4与QWS.代码序列,

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

将使用QWS与Qt4.x一起使用.需要注意的一点是,只有服务器才能这样做.即,使用-qws调用该程序.如果您运行多个应用程序,客户端将无法禁用光标.

这应该在构建QApplication之后但在第一个show()或showFullScreen()之前完成.您可能会在构建QApplication之前尝试执行此操作.

编辑:正如您在应用程序最初显示时的意思,

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读