第
Qt6子窗口全屏显示的实现示例
目录一、全屏显示效果二、全屏相关函数三,子窗口全屏显示两种实现方式1.方式一:直接将主窗口全屏,只显示某个子窗口2.方式二:子窗口设置Qt::Window标志,全屏显示四、源码
一、全屏显示效果
二、全屏相关函数
1,全屏显示函数
QWidget::showFullScreen();//此方法只对顶级窗口有效,对子窗口无效
2,恢复显示函数
QWidget::showNormal();//此方法也只对顶级窗口有效,对子窗口无效
3,最小化显示函数
QWidget::showMinimized();
4,最大化显示函数
QWidget::showMaximized();
5,设置窗口类型
QWidget::setWindowFlags(Qt::WindowFlags);
三,子窗口全屏显示两种实现方式
ps:本文只测试了Qt6环境运行情况。
Qt中的窗口QWidget成员函数showFullScreen,可以将窗口全屏显示,但是只是对窗口模式有用,也就是具有Qt::Window属性的窗口。
enumWindowType{
Widget=0
Window=0
Dialog=0|Window,
Sheet=0|Window,
Drawer=Sheet|Dialog,
Popup=0|Window,
Tool=Popup|Dialog,
ToolTip=Popup|Sheet,
SplashScreen=ToolTip|Dialog,
Desktop=0|Window,
SubWindow=0
ForeignWindow=0|Window,
CoverWindow=0|Window,
Dialog也具有Qt::Window属性。
1.方式一:直接将主窗口全屏,只显示某个子窗口
这是一种实现起来可能比较繁琐的方式,因为要隐藏所有不想看到的控件,退出全屏还得恢复原样,控制粒度比较精细。
但是这种实现方式,不会有多屏显示器的问题,会直接全屏显示到当前窗口屏幕。
先建立一个工程如下
由于要隐藏控件,使用QWidget做布局控件,不要使用VerticalLayout或者HorizontalLayout,它们没有hide()函数。
点击按钮实现全屏或者退出全屏
voidMainWindow::on_pushButtonHideFullScreen_clicked(){
if(this-isFullScreen()){
this-showNormal();
ui-widgetControl-show();
ui-statusbar-show();
}else{
this-showFullScreen();
ui-widgetControl-hide();
ui-statusbar-hide();
在全屏的方式下,不需要的控件需要隐藏,所以最好有一个QWidget来包含这些要隐藏的控件,就只需要隐藏这个QWidget本身。
当退出全屏时候需要恢复显示。
ESC按键退出全屏
在主窗口中进行键盘按键过滤可以直接实现keyPressEvent虚函数即可。
voidMainWindow::keyPressEvent(QKeyEvent*event){
if(this-isFullScreen()event-key()==Qt::Key_Escape){
qDebug()ESC;
this-showNormal();
ui-widgetControl-show();
ui-statusbar-show();
上述代码会在键盘按键按下那一瞬间执行,如果匹配Qt::Key_Escape就退出全屏。
2.方式二:子窗口设置Qt::Window标志,全屏显示
mainwindow.h
需要用到成员变量,保存子窗口和它以前的WindowFlags,退出全屏时候需要恢复。
//子窗口全屏
Q