Russian Qt Forum
Июня 21, 2025, 10:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Размер(ы) виджетов до show окна  (Прочитано 4245 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Февраля 05, 2015, 12:32 »

Добрый день

В очередной раз забыл как это делал в прошлый раз Улыбающийся Потыкав немного - вроде так работает
Код
C++ (Qt)
win->layout()->invalidate();
win->layout()->activate();
 
Где win есть top-level окно имеющее layout, Правильно ли я сделал?

Спасибо

Edit: виноват, правильно invalidate (было update)
« Последнее редактирование: Февраля 05, 2015, 12:51 от Igors » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраля 05, 2015, 12:34 »

А разве оно сработает до реального появления окна? Ведь манагер окон может размеры и изменить.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Февраля 05, 2015, 12:49 »

А разве оно сработает до реального появления окна? Ведь манагер окон может размеры и изменить.
У меня сработало - хотя может это "частный случай", не проверял. Размеры окна заданы явно
« Последнее редактирование: Февраля 05, 2015, 12:51 от Igors » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраля 05, 2015, 12:51 »

А разве оно сработает до реального появления окна? Ведь манагер окон может размеры и изменить.
У меня сработало - хотя может это "частный случай", не проверял. Размеры окна задаю явно
Скорее, частный. В тайлинге  всем рулит именно WM, он просто проигнорирует твои размеры. Сделай тестовый пример, я у себя попробую запустить и отпишусь.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Февраля 05, 2015, 13:31 »

Скорее, частный. В тайлинге  всем рулит именно WM, он просто проигнорирует твои размеры.
Не знаю что то за "тайлинг" и "WM" (наверное молодежный сленг), но я хочу знать размеры (а не задавать их)

Сделай тестовый пример, я у себя попробую запустить и отпишусь.
Аттач
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Февраля 05, 2015, 13:53 »

В следующий раз с pro файлом прикладывай, пожалуйста. Вот вывод:
Код:
 "Before layout activate"
QLabel(0x883bc0) QRect(0,0 100x30)
QTreeWidget(0x883ef0) QRect(0,0 100x30)
QPushButton(0x8c5c40) QRect(0,0 100x30)
QPushButton(0x8c89a0) QRect(0,0 100x30)

 "After layout activate"
QLabel(0x883bc0) QRect(10,10 780x13)
QTreeWidget(0x883ef0) QRect(10,28 780x519)
QPushButton(0x8c5c40) QRect(8,8 380x22)
QPushButton(0x8c89a0) QRect(393,8 379x22)

 "After show"
QLabel(0x883bc0) QRect(10,10 780x13)
QTreeWidget(0x883ef0) QRect(10,28 780x519)
QPushButton(0x8c5c40) QRect(8,8 380x22)
QPushButton(0x8c89a0) QRect(393,8 379x22)


WM - Windows Manager. А про тайлинг загугли.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Февраля 05, 2015, 13:55 »

Но реальные размеры окна потом поменялись. Скорее всего, надо еще ловить активэйт.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Февраля 05, 2015, 14:09 »

WM - Windows Manager.
Всё-таки правильнее будет "Window Manager"  Подмигивающий

Реальный размер окна будет перед вызовом QWidget::showEvent().
А дефолтный по QWidget::sizeHint().
Записан

Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Февраля 05, 2015, 14:10 »

GreatSnake, сорьки, Window Manager.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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