从布局中删除小部件并插回后,QWidget的高度变为0

时间:2014-04-18 17:23:51

标签: c++ qt qwidget qt5.2

我在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并再次显示,但不要调整大小超过最小高度。

这种情况有解决办法吗?难道我做错了什么?为什么会这样?

0 个答案:

没有答案