QBoxLayout добавить QTextEdit в полном размере и QPushButton

Я хочу иметь QTextEdit а также QPushButton в QBoxLayout, где кнопка занимает столько маленького размера, сколько нужно, а textedit все остальное.

До сих пор я придумал это.

QPushButton* button = new QPushButton();
button->setText("Button");

QTextEdit* textedit = new QTextEdit();

QBoxLayout* boxLayout = new QBoxLayout(QBoxLayout::TopToBottom);
boxLayout->addWidget(textedit, 0, Qt::AlignTop);
boxLayout->addWidget(button, 0, Qt::AlignLeading);

mUI->centralWidget->setLayout(boxLayout);

Между текстом и кнопкой все еще есть отступ. Как я могу удалить это?

Скриншот макета

1

Решение

Попробуй удалить Qt::AlignTop:

QPushButton* button = new QPushButton();
button->setText("Button");

QTextEdit* textedit = new QTextEdit();

QBoxLayout* boxLayout = new QBoxLayout(QBoxLayout::TopToBottom);
boxLayout->addWidget(textedit, 0);
boxLayout->addWidget(button, 0, Qt::AlignLeading);

mUI->centralWidget->setLayout(boxLayout);

У меня сработало нормально

3

Другие решения

Использовать setStretch функция.

boxLayout->setStretch(0, 1);
boxLayout->setStretch(1, 0);

РЕДАКТИРОВАТЬ

Использовать QVBoxLayout вместо:

QPushButton* button = new QPushButton();
button->setText("Button");

QTextEdit* textedit = new QTextEdit();

QVBoxLayout* boxLayout = new QVBoxLayout();
boxLayout->addWidget(textedit);
boxLayout->addWidget(button);

boxLayout->setStretch(0, 1);
boxLayout->setStretch(1, 0);

mUI->centralWidget->setLayout(boxLayout);
0