我在Qt中设计了一个很好的布局,但是当我单击父窗口并将其设置为网格布局时,事情就变得很糟糕了。我已经阅读了我能找到的每个教程以及Qt设计手册,但是无法弄清楚为什么会这样。我附上了截图来显示问题:
如您所见,左侧的垂直布局坚持比它所包含的孩子更宽。标签和树视图都设置为sizePolicy最大值,最大宽度设置为260px。孩子们自己保持正确的大小,但包含它们的垂直布局不会。
中间的垂直布局设置为展开,最右侧的垂直布局设置与左侧的垂直布局相同,只有一个看起来有效。如何使第一个垂直布局符合其子宽度?
另外,如果我可能会偷回第二个问题,我在右下方的标签窗口小部件中有一个QTextEdit,但它不会填满占用完整标签视图的空间。您无法在屏幕截图中看到,但如果我拉出tabview,其中的textedit就不会随之拉伸。如何使其符合选项卡的大小?它已经设置为sizePolicy扩展,但这似乎没有帮助。
答案 0 :(得分:3)
问题很可能是您需要尝试“拉伸”布局。拉伸设置布局单元格相对于彼此的大小。默认值为0,表示不进行拉伸。
在您的情况下,我相信您要将第一列(第0列)的延伸设置为0,将第二列和第三列的延伸设置为1.这意味着第一列将始终如此小可能,第二和第三列将尝试同样宽。
您可以非常轻松地以编程方式设置拉伸;例如,要将第一列设置为拉伸0:
layout->setColumnStretch(0, 0);
在Qt Designer中,您可以像任何普通属性一样访问列和行的延伸。