QBoxLayout испортит QFormLayout? - PullRequest
       14

QBoxLayout испортит QFormLayout?

2 голосов
/ 31 марта 2012

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

#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 к formlayout, и по-прежнему центрировать их по вертикали?

1 Ответ

3 голосов
/ 31 марта 2012

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

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