QWidget :: height () только что добавленного виджета в макет - PullRequest
3 голосов
/ 22 сентября 2010

Как получить окончательную высоту виджета, который был только что добавлен в макет, но из-за этого он не изменился до своего окончательного размера?

В основном мне нужно сделать это:

myGridLayout->addWidget ( somewidget, 0, 0, 1, 1 );

QPushButton *b = new QPushButton(somewidget);
b->setGeometry( somewidget->width() - 50,
                somewidget->height()/2 - 150,
                50, 300);

Что я хочу сделать, это вставить кнопку (50x300) в середину правого края только что добавленного виджета, но для этого мне нужно знать размеры виджета, что я не получаю правильно, потому что он не изменился в своем полном размере в макете. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 22 сентября 2010

Обычно содержимое макета вычисляется непосредственно перед отображением.Если вам нужно форсировать его раньше, вы можете вызвать либо QLayout::activate(), либо QLayout::update(), который восстанавливает или обновляет макет для родительского виджета.

0 голосов
/ 23 сентября 2010

Если я вас правильно понимаю, это должно выполнить то, что вы пытаетесь сделать, не пытаясь поймать размер в нужное время.Добавьте макет к вашему somewidget и добавьте к нему кнопку.

myGridLayout->addWidget(somewidget, 0, 0, 1, 1 );

QGridLayout *layout = new QGridLayout(somewidget);
QPushButton *button = new QPushButton();
button->setText("button");
button->setMaximumSize(50,300);
button->setMinimumSize(50,300);
button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
layout->addWidget(button, 0, 0, Qt::AlignVCenter | Qt::AlignRight);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...