我在Qt 5.2.1上编写了videoplayer,其中包含非常复杂的小部件和布局组织。我希望在用户按F11后全屏显示我的播放器,所以我编写了如下代码:
void SomeClass::setFullScreen(bool fullScreenModeOn) // SomeClass is centralWidget of MainWindow
{
if (fullScreenModeOn && !player->isFullScreen())
{
vbox->removeWidget(player);
player->setParent(0);
player->showFullScreen();
parentWidget()->hide(); // this one is MainWindow
}
else if (!fullScreenModeOn && player->isFullScreen())
{
player->hide();
player->setParent(this);
vbox->insertWidget(0, player);
parentWidget()->show();
}
}
我只是将播放器小部件显示为单独的窗口并全屏显示;当用户再次按F11时,否则分支完全反转 - 将小部件添加回布局并显示父窗口。 当我使用最新的Qt 5.2.1在QtCreator 3.0.1中构建此代码时 - 一切都很精细!
但是!当我尝试在我的Ubuntu 13.10上使用Qt 5.0.2库运行这个应用程序时,我得到以下情况:在我关闭全屏模式后,玩家小部件就消失了!经过一些调试后我发现玩家实际上是在布局上,但是它的高度变为0并且无法改变(因为qlayout控制了小部件的大小)。我可以为玩家小部件设置minimumHeight并再次显示,但不要调整大小超过最小高度。
这种情况有解决办法吗?难道我做错了什么?为什么会这样?