如图,右方是一个label和三个pushbutton,相关代码如下
QLabel *label = new QLabel;
label->setText("Welcome to HelloMaze");
rightLayout = new QGridLayout();
rightLayout->addWidget(label, 0, 0, 1, 2);
rightLayout->addWidget(sizeCombo, 1, 0, 1, 1);
rightLayout->addWidget(solveBtn, 1, 1, 1, 1);
rightLayout->addWidget(saveBtn, 2, 0, 1, 2);
rightLayout->setRowStretch(0, 1);
rightLayout->setRowStretch(1, 4);
rightLayout->setSpacing(5);
rightLayout->setMargin(5);
我想把QLabel和QPushbutton的比例调整一下,搜了好一会搜到了setRowStretch,可是为什么没用啊?
Gridlayout不就是一行一列排列的吗,而我设置了比例为什么却没有生效?
方案:
在QGridlayout 里放一个QSpacerItem对象item并用addItem()添加进layout里.
然后设置成合适比例,比如设置成item占总的1/2,这样layout的一半都被item占据
原理:
左方的大小是固定的,故右方的QGridlayout 也要是这个大小,而setRowStretch() 是对整个gridlayout内的控件进行比例划分,无论如何划分都会覆盖整个layout,所以要实现这样的布局,只有用一个什么东西把控件"撑上去"
最后放代码
最终效果图