赞
踩
https://blog.csdn.net/yu5611789/article/details/7569744
1. QT中全屏显示子窗口的方法:
QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示,但是他只对窗口模式的部件有用。子窗口的特征是 Qt::SubWindow,不是独立的窗口。因此对其调用showFullScreen()无效。通过对对子窗口调 用:setWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window);将其设为窗口模式后,即可调用 showFullScreen();进行全屏显示了。
QT中,直接使用move和resize对窗口定位是没有效果的。需要先将子窗口设位非窗口模式。之后再将窗口移到理想位置。即先调用setWindowFlags(Qt::Dialog);或者setWindowFlags(Qt::SubWindow);在调用move和resize函数。
有人提到退出全屏时,调用showNormal(),再调setWindowFlags(Qt::SubWindow)。
这有两个问题:1)showNormal()也是只对顶级窗口有效。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);
方法4:main()函数加入 #include <QWSServer>,实例化QApplication后,添加QWSServer::setCursorVisible(false);
注意:方法2和3只有在动一下触摸屏后鼠标才会消失,第4种在整个程序启动到运行都不会出现鼠标指针。
1. QT测试程序的全屏显示使用方法2:使用showFullScreen()函数
而为了在PC机上模拟程序的运行显示情况,故在调试时屏蔽在每个子窗口中都添加以下代码showFullScreen()函数,改为在每个窗口函数中添加以下代码:
This->setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);//消除系统标题栏
resize(800, 600);//窗口大小为800*600
2.QT测试程序消除鼠标指针使用方法4:main()函数加入 #include <QWSServer>,实例化QApplication后,添加QWSServer::setCursorVisible(false);
但再添加到main()函数中后在QT-x11环境中编译出现以下错误:
main.o: In function `main':
main.cpp:(.text+0x35): undefined reference to `QWSServer::setCursorVisible(bool)'
collect2: ld returned 1 exit status
make: *** [picture] 错误 1
查找资料:
QT Embeded应用没有来严格的区分server和client进程,如果一个QT进程的启动参数中有-qws,那么这个进程就具有server胡管理功能,被称为QWS server,当然这个进程同样可以和其它的QT进程一样可以创建并显示widget,只有兼做server的功能而已。
这个所谓的server功能主要是由QWSServer对象来实现的。
QWSServer的初始化是在QApplication的初始化过程中完成的,具体的流程如下: QApplication::construct-->qt_init-->QWSServer::startup QWSServer::startup是一个static函数,创建全局对象qwsServer.QWSServer的构造函数会依次初始化所管理的对象。
因此QWSServer是一个实现QT Embeded的server功能的类,我们在编译成X11版本的qt程序时才会提示“undefined reference to `QWSServer::setCursorVisible(bool)'”,重新使用QT-Embedded版本编译数码相框程序,编译通过,移植到板子上成功实现全屏显示以及消除鼠标指针。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。