基本信息
文件名称:Qt6子窗口全屏显示的实现示例.docx
文件大小:17.62 KB
总页数:6 页
更新时间:2025-05-21
总字数:约3.62千字
文档摘要

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