QBoxLayout портит QFormLayout?

Следующий упрощенный фрагмент кода:

#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(+содержащий виджет).

результат приведенного выше кода

По какой-то причине это, кажется, портит «вертикальное центрирование» виджета ввода (во 2-й строке). Как я могу добавить виджет, который содержит другие в hboxlayout, к formlayout, и при этом все они будут центрированы по вертикали?


person Ancurio    schedule 31.03.2012    source источник


Ответы (1)


Установите для полей содержимого QHBoxLayout значение 0:

QBoxLayout *hbox = new QHBoxLayout();
hbox->setContentsMargins(0, 0, 0, 0);
person Community    schedule 31.03.2012