Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: wolph от Октябрь 30, 2010, 14:30



Название: Как узнать размер окна виджета?
Отправлено: 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.


Название: Re: Как узнать размер окна виджета?
Отправлено: GreatSnake от Ноябрь 01, 2010, 11:44
Цитировать
wgt.showMaximized();
Есть ничто иное как нотация менеджеру окон (WM) "Развернуть" окно.
И Qt может получить размеры развернутого окна только через определенное время, когда отработает WM.
Поэтому нужно зарядить таймер и организовать локальный eventLoop или заменить resizeEvent() у виджета.


Название: Re: Как узнать размер окна виджета?
Отправлено: SASA от Ноябрь 01, 2010, 12:48
Надо показать окно QWidget::show.