Qt小部件之间的边距/间距

6
我想要调整我的小部件之间的垂直和水平空间。下面是一张图表明了我想要的:
当我点击红点时,我希望缩小/扩大红线所在的空间(垂直方向)。
当我点击蓝点时,我希望缩小/扩大蓝线所在的空间(水平方向)。
我的架构如下:
一个带有布局的主小部件,其中包含左右箭头按钮和一个用于所有白色视图的QWidget。
这个QWidget包含一个QGridLayout。在这个QGridLayout中,我有“left”、“back”……小部件(在屏幕截图中为白色)。
我尝试过设置VIEW->setContentsMargins();但是白色矩形保持不变,只有这个矩形内部的间距发生了变化(例如边框和“left”标签之间的间距(1和2))。
我还试图设置GRIDLAYOUT->setContentsMargins();但是这次只有3和4的间距发生了变化。
显然,水平调整也有相同的行为。(屏幕截图上的蓝色标记)
间距不允许单独管理垂直和水平间距……
我希望你理解我尝试解释的内容:o
我该如何处理?
谢谢您的帮助。

尝试在每个单元格之间使用间隔器(即在网格布局中的每个组件之间添加垂直/水平间隔器)。我不确定这是否能解决你的问题,但绝对值得一试。 - Pratham
当您更改间距时,应该增长/缩小什么,而什么是固定大小? - Mat
垂直方向上,屏幕截图中红线所在的空间应该增长,白色矩形应该缩小。 - Slot
1个回答

10

要管理白色矩形之间的间距,您可以轻松使用

QGridLayout()::setHorizontalSpacing(int spacing);
QGridLayout()::setVerticalSpacing(int spacing);

这将设置白色矩形之间的空格,但不包括白色矩形和上部小部件边框之间的空格。对于这些,您需要使用QLayout继承的方法:

QGridLayout()::setContentsMargins ( int left, int top, int right, int bottom )

这太棒了 :) 谢谢。 我只是在调整大小时遇到了一些 "闪烁",例如当我减小大小时,小部件会非常快速地重新增长/缩小。 你有什么想法吗? - Slot
听起来像是在调整大小期间的渲染片段。不确定如何避免这种情况,可以阻止重绘到稍后的时间框架中,但我从未尝试过这样做。您可以尝试在第一次调用(间距)上使用blockSignals(),并在调用第二个(边距)时取消阻止。否则,您实际上会调用2次重绘。 - Sebastian Lange
那没有帮助 :'( - Slot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接