嵌入式linux系统qt界面程序隐藏鼠标方法,踩坑过程分析

问题描述:

        近来基于qt crearor开发了一个嵌入式linux程序,部署在一个带有触摸屏的嵌入式平台里,设置了开机自启动后,界面上还有鼠标,影响了美观,希望能够把鼠标去掉。

解决步骤一:

        首先查看qt开发环境里,窗口的属性,发现有一项cursor,如下图所示。

点击后边的选项,是鼠标的设置,选择了Blank,在上位机上进行调试,发现界面上鼠标真的没有了。

        交叉编译成可执行程序,复制到嵌入式平台里,设置为开机自启动。启动之后,发现鼠标还存在,点击屏幕上的按钮,鼠标就变没了。但是这并没有根本解决问题。

解决步骤二:

        分析上面的问题,之所以点之后鼠标变没了,说明步骤一的设置起作用了,而最开始的鼠标应该是操作系统本身的界面,应用程序自启动后,系统本身的鼠标图像位于应用程序的上一层,当点击界面后,界面就位于最上层了,就把系统的鼠标覆盖了。

        基于这个分析,如果当界面启动后,将界面置于顶层应该就可以把系统的鼠标图像覆盖了。然后在网上查找了将窗口置顶的方法,在窗口的构造函数中加入了下面的代码。

    this->setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint); 
    this->update();

代码的第一行设置两个标志位,第一个是隐藏窗口的标题栏,这是原来就有的,第二个标志为就是将窗口置顶的设置,第二行代码刷新当前窗口。

        本以为这样可以把问题解决,但是经过测试,问题还是没有解决。

解决步骤三:

        经过上面的步骤,将窗口置顶依然不好用。继续对代码进行分析,查看一下main.cpp,如下所示。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

在主函数中,实例化了一个qt的应用程序a,然后实例化了一个窗体w,然后显示窗体,然后执行应用程序。基于上面的分析,在

w.show();这一步,鼠标应该还是存在的,点击界面触发了按钮的槽,使界面置顶,才导致鼠标变没了。

        上面的步骤之所以没有解决,问题根本原因应该是对窗口本身的操作,无法改变窗口与系统界面的关系,也就是说,上面的设置都是在窗口实例化的过程起作用的,窗口显示之后,再进行操作才能将鼠标隐藏。经过查找,在w.show();下一行加入了下面的代码

QApplication::setOverrideCursor(Qt::BlankCursor);

这一行的作用是在窗口显示之后,让应用程序的鼠标隐藏,经过测试,该方法完美解决了问题。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值