如何在QGridLayout中动态调整QLabel大小 - Qt Creator

时间:2016-02-18 05:03:35

标签: xml qt layout qt-creator qlabel

我有一个如下所示的网格布局,其中包含3个QLabel对象,用于显示3个单独的视频流。可以切换一些流,我希望显示在布局中自动调整大小到最大尺寸。

layout 当使用两个相邻的QLabel(仅红色和蓝色)时,我可以通过在一个标签上使用setVisible(false)来完成此操作,另一个标签将调整大小以填充布局区域。但是在下面的布局中添加第三个标签对象已经打破了这个,虽然我不知道为什么。

这是在网格布局中使用两个相邻的qlabels 激活的2个“流”(仅使用网络摄像头进行测试,第二个显示屏还没有视频)

twostream 然后在调用label2-> setVisible(false)

之后

1stream 这是我在使用3个标签时想要的结果。当我尝试这个并设置标签2和3的可见性时,这就是我得到的:

bad1stream 包含qlabels的gridlayout使用setFixedSize约束,并且每个qlabel正在使用水平和垂直的首选大小策略。你可以看到垂直调整大小应该工作,但不是水平。如何调整标签以正确调整水平尺寸?

可以在此处看到ui的完整样式表:http://pastebin.com/vJUkMGT8

1 个答案:

答案 0 :(得分:1)

它不适用于QGridLayout,因为它应该更像一张桌子。相同数量的行和列。如果您要使用这三个流,可以使用QHorizontalLayout作为前两个对象,并将第三个对象放入QVerticalLayout

问题是当您关闭第二个流(隐藏它)时。实际上你应该隐藏第三个QLabel并在第二个QLabel中播放第三个流。

这是一个非常特殊的布局,你应该继承和编写自己的布局,特别是当你有更多的流而不是三个。