0

我在 Qt 5.2.1 上编写了视频播放器,其中的小部件和布局组织非常复杂。我想在用户按 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 中构建此代码时 -一切正常

但!当我尝试在带有 Qt 5.0.2 库的 Ubuntu 13.10 上运行此应用程序时,我遇到了以下情况:在我关闭全屏模式后,播放器小部件就消失了!经过一些调试,我发现播放器实际上是在布局上,但是它的高度变成了 0 并且不能改回来(因为 qlayout 控制小部件的大小)。我可以为播放器小部件设置 minimumHeight 并再次出现,但不要调整大小大于最小高度。

那么这种情况有解决方法吗?难道我做错了什么?为什么会发生这种情况?

4

0 回答 0