我正在使用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);
我不知道如何解决这个问题。
我会提前感谢您的建议。
答案 0 :(得分:2)
问题在于,没有任何东西可以给中间列带来任何明显的宽度 - 它是唯一可以让它可见的是柱间间距,这就是为什么最后一行没有& #39;与其他两个对齐。
解决此问题的一种方法是设置列stretch因子。例如,试试这个(所有列的相同因素,实际数字并不重要,只有比例):
//...
layout->addWidget(lineEdits[5], 2, 2, 1, 1);
for (int i=0; i<3; ++i)
layout->setColumnStretch(i, 1);
this->setLayout(layout);
这给了我以下布局:
另一个选择是强制其中一个多列小部件&#39;明确宽度,但如果可以,最好避免使用。