QHBoxLayout имеет неверную ширину - PullRequest
0 голосов
/ 20 февраля 2019

Привет :) Это мой код (с тем, что я попробовал в комментарии).«this» является классом, производным от QWidget, и «this» не имеет размера, потому что я хочу подогнать его в зависимости от размера дочерних элементов (поэтому в «paintEvent» я вызываю «AdjustSize ()»):

QPushButton *button1 = new QPushButton("Hello and good morning");
QPushButton *button2 = new QPushButton("World");

QHBoxLayout *h1 = new QHBoxLayout(this);
QHBoxLayout *h2 = new QHBoxLayout(this);
QVBoxLayout *v = new QVBoxLayout(this);

h1->addWidget(button1);
h2->addWidget(button2);
//h2->setSizeConstraint(QLayout::SetMaximumSize);
//h2->setSizeConstraint(QLayout::SetDefaultConstraint);
//h2->setSizeConstraint(QLayout::SetFixedSize);
//h2->setSizeConstraint(QLayout::SetMinAndMaxSize);

v->addLayout(h1);
v->addLayout(h2);
//v->setSizeConstraint(QLayout::SetDefaultConstraint);
//v->setSizeConstraint(QLayout::SetFixedSize);
//v->setSizeConstraint(QLayout::SetMaximumSize);
//v->setSizeConstraint(QLayout::SetMinAndMaxSize);
//v->setSizeConstraint(QLayout::SetMinimumSize);
//v->setSizeConstraint(QLayout::SetNoConstraint);

QSize s1 = h1->sizeHint();
QSize s2 = h2->sizeHint();

QSize s3 = h1->totalSizeHint();
QSize s4 = h2->totalSizeHint();

QSize s5 = h1->totalMaximumSize();
QSize s6 = h2->totalMaximumSize();

QSize s7 = h1->totalMinimumSize();
QSize s8 = h2->totalMinimumSize();
setLayout(v);
show();

Я получаю такой результат: видна только кнопка1.Когда я устанавливаю точку останова на "setLayout (v)", я вижу, что каждый QSize h2 имеет размер (0, 0).

Мой вопрос: как я могу увидеть button2 (и button1 изкурс :) ) ?Я не хочу устанавливать минимальный / максимальный размер, потому что кнопка должна соответствовать тексту.

Хорошего дня!

1 Ответ

0 голосов
/ 20 февраля 2019

Макет устанавливается непосредственно на виджет, передаваемый в качестве параметра в конструктор вашего макета.Но виджет может иметь только один макет одновременно.

Удалите параметр this, и он должен работать.

QHBoxLayout *h1 = new QHBoxLayout();
QHBoxLayout *h2 = new QHBoxLayout();
QVBoxLayout *v = new QVBoxLayout();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...