Следующий упрощенный фрагмент кода:
#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](https://i.stack.imgur.com/1kWjc.png)
По какой-то причине это, похоже, испортило "вертикальное центрирование" виджета ввода (во 2-й строке). Как я могу добавить виджет, который содержит других в hboxlayout к formlayout, и по-прежнему центрировать их по вертикали?