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

How to dynamically adjust QLabel size in a QGridLayout - Qt Creator

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

当使用两个相邻的 QLabel(仅红色和蓝色)时,我可以通过在一个标签上使用 setVisible(false) 来做到这一点,另一个标签将调整大小以填充布局区域。但是在下面的布局下面添加第三个标签对象已经打破了这一点,尽管我不确定为什么。

这里是 2 'streams' 激活只是 在网格布局中使用两个相邻的 qlabels (只是用网络摄像头测试,第二个显示器还没有视频)

然后调用 label2->setVisible(false)

这是我使用 3 个标签时想要的结果。当我尝试这样做并关闭标签 2 和 3 的可见性时,这就是我得到的:

包含 qlabels 的网格布局使用 setFixedSize 约束,并且每个 qlabel 都使用首选的水平和垂直大小调整策略。您可以看到垂直大小调整正常,但水平方向不正常。如何调整标签以正确地水平调整大小?

ui 的完整样式 sheet 可以在这里看到:http://pastebin.com/vJUkMGT8

它不适用于 QGridLayout,因为它应该更像 table。行数和列数相同。如果您要拥有这三个流,您可以对前两个对象使用 QHorizontalLayout 并将其与第三个对象一起放入 QVerticalLayout.

问题出在您关闭第二个流(隐藏它)时。实际上你应该隐藏第三个 QLabel 并在第二个 QLabel.

中播放第三个流

这是一个非常特殊的布局,您或许应该继承并编写自己的布局,尤其是当您要拥有超过三个流时。