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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Размер(ы) виджетов до show окна  (Прочитано 4039 раз)
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

Сообщений: 5876


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


Просмотр профиля 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

Сообщений: 5876


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


Просмотр профиля 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

Сообщений: 5876


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


Просмотр профиля 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

Сообщений: 5876


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


Просмотр профиля 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

Сообщений: 5876


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


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

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

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


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