QT程序全屏显示及消除鼠标指针

本文介绍了在QT中如何使子窗口全屏显示及如何隐藏触摸屏上的鼠标指针,包括具体实现方法和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、技术资料

1.QT中全屏显示子窗口的方法:

QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示,但是他只对窗口模式的部件有用。子窗口的特征是Qt::SubWindow,不是独立的窗口。因此对其调用showFullScreen()无效。通过对对子窗口调用:setWindowFlagsQt::Dialog);或setWindowFlagsQt::Window);将其设为窗口模式后,即可调用showFullScreen();进行全屏显示了。

QT中,直接使用moveresize对窗口定位是没有效果的。需要先将子窗口设位非窗口模式。之后再将窗口移到理想位置。即先调用setWindowFlagsQt::Dialog);或者setWindowFlagsQt::SubWindow);在调用moveresize函数。

有人提到退出全屏时,调用showNormal(),再调setWindowFlagsQt::SubWindow)。

这有两个问题:1showNormal()也是只对顶级窗口有效。2)可以考虑先调用showNormal()将窗口设为原来大小,在将窗口设为子窗口模式。但这样窗口回到父窗口之中也不会显示原来的大小

总结方法有2个:

方法1:使用函数setWindowFlags()函数

例:this->setWindowFlags(Qt::window|Qt::FramelessWindowHint);

(第一个Qt::window表示此widget是窗口类型,第二个参数使用无框架就是没有标题,状态栏和边框)

方法2:使用showFullScreen()函数

例:在窗口对象中加入this->showFullScreen();即可,此方法只对顶级窗口有效。

2.QT触摸屏隐藏鼠标指针

方法1:运行加参数-nomouse

鼠标指针是没了,触摸屏也失效了。

方法2:QWidget::setCursor(QCursor(Qt::BlankCursor)

例:this->setCursor(Qt::BlankCurror);

只希望在某个QWidget(QDialog)控件上不出现鼠标指针。其他窗口仍会显示鼠标指针。

方法3:main函数中调用QApplication::setOverrideCursor(Qt::BlankCurror);

方法4main()函数加入#include<QWSServer>,实例化QApplication后,添加QWSServer::setCursorVisible(false);

注意:方法23只有在动一下触摸屏后鼠标才会消失,第4种在整个程序启动到运行都不会出现鼠标指针。

二、实现过程

1.QT测试程序的全屏显示使用方法2:使用showFullScreen()函数

而为了在PC机上模拟程序的运行显示情况,故在调试时屏蔽在每个子窗口中都添加以下代码showFullScreen()函数,改为在每个窗口函数中添加以下代码:

This->setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);//消除系统标题栏

resize(800,600);//窗口大小为800*600

2.QT测试程序消除鼠标指针使用方法4main()函数加入#include<QWSServer>,实例化QApplication后,添加QWSServer::setCursorVisible(false);

但再添加到main()函数中后在QT-x11环境中编译出现以下错误:

main.o:Infunction`main':

main.cpp:(.text+0x35):undefinedreferenceto`QWSServer::setCursorVisible(bool)'

collect2:ldreturned1exitstatus

make:***[picture]错误1

查找资料:

QTEmbeded应用没有来严格的区分serverclient进程,如果一个QT进程的启动参数中有-qws,那么这个进程就具有server胡管理功能,被称为QWSserver,当然这个进程同样可以和其它的QT进程一样可以创建并显示widget,只有兼做server的功能而已。

这个所谓的server功能主要是由QWSServer对象来实现的。

QWSServer的初始化是在QApplication的初始化过程中完成的,具体的流程如下:QApplication::construct-->qt_init-->QWSServer::startupQWSServer::startup是一个static函数,创建全局对象qwsServer.QWSServer的构造函数会依次初始化所管理的对象

因此QWSServer是一个实现QTEmbededserver功能的类,我们在编译成X11版本的qt程序时才会提示“undefinedreferenceto`QWSServer::setCursorVisible(bool)'”,重新使用QT-Embedded版本编译数码相框程序,编译通过,移植到板子上成功实现全屏显示以及消除鼠标指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值