表单设置:
QSplitter
(图中突出显示) 包含 QTreeWidget
(左侧)和 QTableWidget
(右侧):
这两个部件在 QSplitter 中的非默认属性为:
QTreeWidget
minimumSize / Width = 150
QTableWidget
minimumSize / Width = 300
sizePolicy / Horizontal Stretch = 1
基本上,以上设置指定了这两个组件的最小宽度,并且 QTableWidget
是在表单调整大小时会改变其宽度的组件。
右侧的按钮放置在 QVBoxLayout
中,其大小是固定的。
问题:
在调整表单大小时,QTreeWidget
的宽度从最小值 150 开始增加到未知值 256,然后 QTableWidget
才开始增长。但我期望 QTreeWidget
宽度不变,因为 QTableWidget
处于水平拉伸状态。
请注意,这与 QSplitter
无关,在我将这两个部件放置在 QHBoxLayout
中时,情况也是如此。
更新:
将 QTreeWidget
的最大大小 / 宽度设置为 150(与 minimumSize / Width 相同)以避免调整此小部件的大小,结果如下:
QTreeWidget
现在固定为 150,但是当调整窗口大小时,两个部件之间会出现空白间隙。该间隙增长到 256-150=106,然后 QTableWidget
开始扩展。
基本上结果相似,但是这次由 QTreeWidget
占用的区域现在被分配给了这个空白间隙。
我开始感到这可能是 Qt 的一个 bug。
技术信息:
- Ubuntu 10.04 (Lucid Lynx) x86_64
- GCC 4.4.3
- Qt 4.6.2
QSizePolicy::Policy
对于这些小部件是什么?如果将QSizePolicy::Expanding
设置为QTableWidget
,会发生什么? - Lol4t0QSizePolicy
对于两个小部件都是默认的,即 Expanding。即使我将QTreeWidget
的水平策略设置为 Minimum,结果也是相同的。 - Andrejs CainikovsQTreeWidget
中使用QSizePolicy :: Maximum
,在QTableWidget
中使用QSizePolicy :: Expanding
。最小值实际上不是“小部件应具有最小大小”,请阅读此文档:http://developer.qt.nokia.com/doc/qt-4.8/qsizepolicy.html。 - Lol4t0QTreeWidget
的水平大小策略设置为“最大”会得到相同的结果。 - Andrejs Cainikovs