子窗体全屏显示
之前做过视频播放器实战,其中遇到过一个问题:全屏播放视频的问题,当时是通过隐藏其他的所有组件,让播放视频的label沾满整个主窗口来进行实现,虽然可以实现想要的效果,但是这种方式其实非常笨,因为如果组件或者容器太多,一个一个的隐藏、恢复显示是非常麻烦的。
因此想直接使用如下方式:
1.将显示的QLabel组件放入字窗体QWidget中。
2.修改子窗体类型为Qt::Dialog,并进行全屏显示
ui->widget->setWindowFlags(Qt::Dialog);
ui->widget->showFullScreen();
ui->widget->layout()->setMargin(0);
子窗体恢复
1.将该窗体恢复类型为Qt::SubWindow
2.调用show方法(如果不调用会被隐藏)
ui->widget->setWindowFlags(Qt::SubWindow);
//还原为子窗口模式后需要调用show方法,否则会不显示
ui->widget->show();
注意:在这里会有一个问题,还原为子窗体后显示,可能会出现大小的问题(即大小不能恢复到原来的大小)
有三种解决方式:
方式一:showNormal()
先调用ui->widget->showNormal(),这样就会还原为原来的大小。