问:如何防止某些小部件获取滚动条

时间:2011-11-14 04:49:08

标签: qt layout

我有以下小部件布局:

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”获得优惠待遇以避免滚动条?

2 个答案:

答案 0 :(得分:1)

使用ExpandingA的{​​{1}}尺寸政策。对于小部件“D”,您应该在每次B和/或A的内容发生变化时调整大小。它的大小政策应该是最小的,您应该使用B

如果窗口小部件有滚动条,那么它应该从QAbstractScrollArea继承。您可以使用setHorizontalScrollBarPolicysetVerticalScrollBarPolicy来禁用滚动条:

setMinimumHeight

答案 1 :(得分:0)

您可以将A和B的minimumHeightminimumWidth属性设置为没有滚动条的最低可能值。它们仍然可以扩展,但不会缩小到那么大。

[编辑:] 在重新阅读您的问题后,我意识到您的A和B内容并不总是具有相同的大小。显然,只有在内容发生变化时才知道内容的大小,才能实现上述方法。在这种情况下,您只需从代码中调用setMinimumHeight() / setMinimumWidth()或同等地setMinimumSize()