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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как узнать размер окна виджета?  (Прочитано 10294 раз)
wolph
Гость
« : Октябрь 30, 2010, 14:30 »

Добрый день!

Возникла необходимость узнать размер окна виджета, развернутого по showMaximized()
или если точнее : узнать размер экрана минус размер панельки внизу, минус заголовок вверху и минус рамка.
Код:
QWidget wgt;
wgt.resize(500,400);
wgt.showMaximized();

qDebug() << wgt.width();
qDebug() << wgt.height();

Но несмотря на то что окно на весь экран так навскидку 1024*768, на выводе все равно 500,400
Как с этим бороться?

И вот еще - есть картиночка http://www.doc.crossplatform.ru/qt/4.3.2/images/geometry.png
на ней нарисовано что wgt.geometry().x() и wgt.pos().x() - это разные вещи и не совпадают. У меня же на выводе и там и там 0.
« Последнее редактирование: Октябрь 30, 2010, 15:00 от wolph » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Ноябрь 01, 2010, 11:44 »

Цитировать
wgt.showMaximized();
Есть ничто иное как нотация менеджеру окон (WM) "Развернуть" окно.
И Qt может получить размеры развернутого окна только через определенное время, когда отработает WM.
Поэтому нужно зарядить таймер и организовать локальный eventLoop или заменить resizeEvent() у виджета.
Записан

Qt 5.11/4.8.7 (X11/Win)
SASA
Гость
« Ответ #2 : Ноябрь 01, 2010, 12:48 »

Надо показать окно QWidget::show.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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