主要实现思路是将需要全屏的子控件从父控件中提出来,重新设置size。
//全屏
void Preview::videoFullScreen()
{
//原视图父控件pSplitter_
ui->horizontalLayout->removeWidget(pSplitter_);
ui->horizontalLayout->addWidget(ui->widgtVideo);
QPoint curPoint = ui->widgtVideo->mapToGlobal(QPoint(0,0));
QScreen *curScreen = QGuiApplication::screenAt(curPoint);
ui->widgtVideo->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
// ui->widgtVideo->setFocus();
/* 先更新子控件的屏幕坐标,然后设置子控件全屏显示 */
ui->widgtVideo->setGeometry(curScreen->availableGeometry());
ui->widgtVideo->resize(curScreen->geometry().size());
ui->widgtVideo->show();
}
//关闭全屏
void Preview::closeFullScreen()
{
pSplitter_->addWidget(ui->widgtVideo);
ui->horizontalLayout->addWidget(pSplitter_);
ui->widgtVideo->setWindowFlags(Qt::Widget);
ui->widgtVideo->show();
}