Russian Qt Forum
Ноябрь 26, 2024, 12:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обновление размеров виджета  (Прочитано 3731 раз)
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« : Декабрь 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);

Как исправить?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 25, 2015, 13:09 »

А чем QLabel не угодил? Улыбающийся
Записан

deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #2 : Декабрь 25, 2015, 13:41 »

Особый режим в котором часть данных выводить не нужно.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Декабрь 25, 2015, 13:50 »

В Qt такие вещи работают асинхронно.
Вызови qApp->processEvents() перед рендерингом.
Записан

Qt 5.11/4.8.7 (X11/Win)
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #4 : Декабрь 25, 2015, 14:33 »

QApplication::processEvent() я пробовал вызывать, не помогает. Формочка рисуется почти правильно(скрытые метки не отображаются), просто ее размер некорректен.

если в начале render вызвать, то потом код выполнится нормально.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.131 секунд. Запросов: 23.