C++ QGridLayout不';I don’我没有按预期工作

C++ QGridLayout不';I don’我没有按预期工作,c++,qt,user-interface,C++,Qt,User Interface,我正在使用Qt5.5为我的项目构建gui,并尝试使用QGridLayout 第一来源 这个代码正如我所期望的那样工作 QGridLayout * layout = new QGridLayout; layout->addWidget(lineEdits[0], 0,0,1,1); layout->addWidget(lineEdits[1], 0,1,1,1); layout->addWidget(lineEdits[2], 1,0,1,1); layout->addW

我正在使用Qt5.5为我的项目构建gui,并尝试使用QGridLayout

第一来源 这个代码正如我所期望的那样工作

QGridLayout * layout = new QGridLayout;
layout->addWidget(lineEdits[0], 0,0,1,1);
layout->addWidget(lineEdits[1], 0,1,1,1);

layout->addWidget(lineEdits[2], 1,0,1,1);
layout->addWidget(lineEdits[3], 1,1,1,2);

layout->addWidget(lineEdits[4], 2,0,1,2);
layout->addWidget(lineEdits[5], 2,2,1,1);
this->setLayout(layout);
QGridLayout * layout = new QGridLayout;
layout->addWidget(lineEdits[0], 0,0,1,1);
layout->addWidget(lineEdits[1], 0,1,1,2); //this is the only difference

layout->addWidget(lineEdits[2], 1,0,1,1);
layout->addWidget(lineEdits[3], 1,1,1,2);

layout->addWidget(lineEdits[4], 2,0,1,2);
layout->addWidget(lineEdits[5], 2,2,1,1);
this->setLayout(layout);
这是我得到的结果

第二来源 但这段代码生成了不完整的布局,这与我的预期相去甚远

QGridLayout * layout = new QGridLayout;
layout->addWidget(lineEdits[0], 0,0,1,1);
layout->addWidget(lineEdits[1], 0,1,1,1);

layout->addWidget(lineEdits[2], 1,0,1,1);
layout->addWidget(lineEdits[3], 1,1,1,2);

layout->addWidget(lineEdits[4], 2,0,1,2);
layout->addWidget(lineEdits[5], 2,2,1,1);
this->setLayout(layout);
QGridLayout * layout = new QGridLayout;
layout->addWidget(lineEdits[0], 0,0,1,1);
layout->addWidget(lineEdits[1], 0,1,1,2); //this is the only difference

layout->addWidget(lineEdits[2], 1,0,1,1);
layout->addWidget(lineEdits[3], 1,1,1,2);

layout->addWidget(lineEdits[4], 2,0,1,2);
layout->addWidget(lineEdits[5], 2,2,1,1);
this->setLayout(layout);

我不知道如何解决这个问题


如果您能提前提出建议,我将不胜感激。

问题在于,没有任何东西能给中间的列提供任何显著的宽度-它在那里,但唯一能让它可见的是列间距,这就是最后一行与其他两行不对齐的原因

解决此问题的一种方法是设置列因子。例如,尝试以下方法(所有列的系数相同,实际数字不重要,只有比例重要):

/。。。
布局->添加小部件(lineEdits[5],2,2,1,1);
for(int i=0;isetColumnStretch(i,1);
此->设置布局(布局);
这给了我以下布局:


另一个选择是显式强制多栏窗口小部件的宽度,但如果可以,最好避免这种情况。

谢谢。完美答案。