2013-12-10 4 views
1

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

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

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); 

По-прежнему имеется прокладка между текстовым элементом и кнопкой. Как его удалить?

Screenshot of Layout

ответ

3

Попробуйте удалить 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); 

Это работало для меня прекрасной

0

Используйте функцию setStretch.

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

EDIT

Используйте 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

Не работает. Где именно я должен это выразить? – Niklas

+0

Проверить измененный ответ – pnezis