一.前言
面对大屏操作的时候,经常需要全屏效果查看,楼主也是遇到相关的需求,于是记录分享一下
二.全屏实现
1.顶级窗口的全屏与恢复,顶级窗口的全屏和回复都很简单,直接调用简单的接口即可
void GraphicsViewDemo::on_pushButton_1_clicked()
{
showFullScreen();
}
void GraphicsViewDemo::on_pushButton_2_clicked()
{
showNormal();
}
2.非顶级窗口(子控件)的全屏与恢复操作
2.1showFullScreen()以及showNormal()只对顶级窗口的起作用,所以不能直接用上面的接口来进行操作,楼主这里采用的思路是:将子控件的parent设置为空,使之成为一个独立的控件, 然后再调用showFullScreen接口
ui->groupBox->setParent(nullptr);
ui->groupBox->showFullScreen();
恢复的话,采用的思路的话,将子控件设置为子控件,然后调用showNormal(),然后再把子控件加入到原来的布局中去,不然会出现两个窗口
ui->groupBox->setWindowFlag(Qt::SubWindow);
ui->groupBox->showNormal();
this->layout()->addWidget(ui->groupBox);
三.踩坑记录showFullScreen
1.网上分享的子控件思路:将子控件设置为顶级窗口,然后再showFullScreen,恢复就是将子控件设置为SubWindow,然后再showNormal,这种方式恢复的时候,会变成两个窗口,子控件会独立的窗口,楼主的这个方式解决了这个问题