QBoxLayout搞砸了QFormLayout?

时间:2012-03-31 15:56:39

标签: qt user-interface layout qt4 hbox

遵循简化的代码段:

#include <QtGui>

int main(int argc, char **argv)
{
QApplication app(argc, argv);
QWidget *window = new QWidget();
QFormLayout *form = new QFormLayout();

// first row
form->addRow("First row:", new QLineEdit());

// second row
QWidget *hbox_widget = new QWidget();
QBoxLayout *hbox = new QHBoxLayout();
hbox->addWidget(new QLineEdit());
hbox_widget->setLayout(hbox);
form->addRow("Second row:", hbox_widget);

window->setLayout(form);
window->show();
return app.exec();
}

在这里,我创建了一个包含两行的QFormLayout:第一行是标签+输入小部件的经典示例,第二行几乎相同,但输入小部件在QHBoxLayout中被“装箱”(+包含)插件)。

result of above code

出于某种原因,这似乎搞砸了输入小部件的“垂直居中”(在第2行)。如何将包含hboxlayout中其他内容的窗口小部件添加到窗体布局中,并且仍然将它们全部垂直居中?

1 个答案:

答案 0 :(得分:3)

将QHBoxLayout的内容边距设置为0:

QBoxLayout *hbox = new QHBoxLayout();
hbox->setContentsMargins(0, 0, 0, 0);