Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: deMax от Декабрь 25, 2015, 12:35



Название: Обновление размеров виджета
Отправлено: deMax от Декабрь 25, 2015, 12:35
Есть код, который генерирует картинку из виджета, у виджета скрывается/показывается текст - соответственно и размеры меняются. Но у меня виджет принимает правильный размер только если код внизу выполнить 2 раза.
Код:
ui->label->setVisible(visible);
w->resize(w->minimusSizeHint());
pix = QPixmap(w.size());
pix.fill(QColor(255,255,255,150));
w.render(&pix,QPoint(),QRegion(),QWidget::DrawChildren);

Как исправить?


Название: Re: Обновление размеров виджета
Отправлено: gil9red от Декабрь 25, 2015, 13:09
А чем QLabel не угодил? :)


Название: Re: Обновление размеров виджета
Отправлено: deMax от Декабрь 25, 2015, 13:41
Особый режим в котором часть данных выводить не нужно.


Название: Re: Обновление размеров виджета
Отправлено: GreatSnake от Декабрь 25, 2015, 13:50
В Qt такие вещи работают асинхронно.
Вызови qApp->processEvents() перед рендерингом.


Название: Re: Обновление размеров виджета
Отправлено: deMax от Декабрь 25, 2015, 14:33
QApplication::processEvent() я пробовал вызывать, не помогает. Формочка рисуется почти правильно(скрытые метки не отображаются), просто ее размер некорректен.

если в начале render вызвать, то потом код выполнится нормально.