Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 小部件之间的Qt边距/间距_C++_Qt_Layout - Fatal编程技术网

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

C++ 小部件之间的Qt边距/间距,c++,qt,layout,C++,Qt,Layout,我想管理我的小部件之间的空间,垂直和水平 下面是一张说明我想要什么的图片: 当我单击红点时,我希望减少/扩展红线所在的空间(垂直) 当我点击蓝点时,我想减少/扩展蓝线所在的空间(水平) 我的架构是这样的: 带有布局的主小部件,其中包含左/右箭头按钮和用于所有白色视图的QWidget 此QWidget包含QGridLayout。在这个QGrid布局中,我有“左”,“后”。。。小部件(屏幕截图上为白色) 具有布局的QWidget 左箭头 右箭头 带有QGridLayout的QWidget(GR

我想管理我的小部件之间的空间,垂直和水平

下面是一张说明我想要什么的图片:

当我单击红点时,我希望减少/扩展红线所在的空间(垂直)

当我点击蓝点时,我想减少/扩展蓝线所在的空间(水平)

我的架构是这样的:

带有布局的主小部件,其中包含左/右箭头按钮和用于所有白色视图的QWidget

此QWidget包含QGridLayout。在这个QGrid布局中,我有“左”,“后”。。。小部件(屏幕截图上为白色)

  • 具有布局的QWidget
    • 左箭头
    • 右箭头
    • 带有QGridLayout的QWidget(GRIDLAYOUT)
      • QWidget具有VBoxLayout和2个标签。(视图)
我试图设置VIEW->setContentsMargins();但白色矩形保持不变,只有该矩形内的间距发生变化(例如,在边框和“左”标签之间(屏幕上的1和2))

我还尝试设置GRIDLAYOUT->setContentsMargins();但这一次只有屏幕上数字3和4的间距在改变

显然,水平调整大小也有相同的行为。(屏幕截图上的蓝色标记

间距不允许单独管理垂直和水平间距

我希望你能理解我试图解释的:o

我该怎么办


提前感谢您管理您可以轻松使用的白色矩形之间的空间

QGridLayout()::setHorizontalSpacing(int spacing);
QGridLayout()::setVerticalSpacing(int spacing);
这将设置白色矩形之间的空间,但不设置白色矩形和上部小部件边框之间的空间。对于这些,您必须使用(从QLayout继承):


尝试在每个单元格之间使用分隔符。(即,在添加的每个组件之间的网格布局中添加垂直/水平分隔符)…我不确定这是否能解决你的问题..但绝对值得一试当你改变间距时,什么应该增大/缩小,什么是固定大小?垂直方向上,应该增大的是屏幕截图中红线所在的空间,白色矩形应该缩小。太完美了:)谢谢。我只是有一些“闪烁”,例如,当我调整大小时,小部件会很快重新增长/缩小。你有什么想法吗?听起来像是在调整大小时渲染的片段。不知道如何避免这种情况,可能会在以后的时间段内阻止重新绘制,但从未这样做过。您可以尝试在第一次调用(间隔)时使用blockSignals(),在调用第二次(边距)时取消阻塞。否则,您实际上会调用2个重新绘制。这没有帮助:'(
QGridLayout()::setContentsMargins ( int left, int top, int right, int bottom )