我有以下小部件布局:
HBox
- VBox
- HBox
widget "A"
widget "B"
- widget "C"
- widget "D"
换句话说,我有这样的事情:
+-----+--------------+
| A | |
+-----+ C |
| B | |
+-----+--------------+
| D |
+--------------------+
根据内容,“A”和“B”需要扩展和消耗尽可能多的垂直空间,而不显示任何滚动条。 “D”可以根据需要签订合同。
我尝试将“A”和“B”的sizePolicy()设置为“Minimum”,并根据它们显示的内容为“A”和“B”实现sizeHint()。但是,我仍然看到“A”和“B”中的滚动条,而“D”的空间比它需要的多。
我也尝试过sizePolicy()的“minimumExpanding”,但我仍然看到滚动条。
如何确保空间可用,“A”和“B”获得优惠待遇以避免滚动条?
答案 0 :(得分:1)
使用Expanding
和A
的{{1}}尺寸政策。对于小部件“D”,您应该在每次B
和/或A
的内容发生变化时调整大小。它的大小政策应该是最小的,您应该使用B
。
如果窗口小部件有滚动条,那么它应该从QAbstractScrollArea
继承。您可以使用setHorizontalScrollBarPolicy
和setVerticalScrollBarPolicy
来禁用滚动条:
setMinimumHeight
答案 1 :(得分:0)
您可以将A和B的minimumHeight
和minimumWidth
属性设置为没有滚动条的最低可能值。它们仍然可以扩展,但不会缩小到那么大。
[编辑:]
在重新阅读您的问题后,我意识到您的A和B内容并不总是具有相同的大小。显然,只有在内容发生变化时才知道内容的大小,才能实现上述方法。在这种情况下,您只需从代码中调用setMinimumHeight()
/ setMinimumWidth()
或同等地setMinimumSize()
。