Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Реальный размер QWidget
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
anater
Итак нубский вопрос.
Создаю свой виджет
Pb::pb(QWidget * parent)
:QWidget(parent)
{
std::cout << x() <<std::endl;
std::cout << y() <<std::endl;

std::cout << size().height() <<std::endl;
std::cout << size().width() <<std::endl;
};


и вкладываю их штук двадцать в QFrame.

Так вот кусок который выводит мне размеры явно гонит все виджеты пишет размером 640х480, хотя визуально получается максисмум 70х100.

Дело в том счто далее тут должна будет присутствовать графика и для нормальной отрисовки нуно знать реальные размеры и координаты.

Что нуно сделать чтобы их получить? HELP!!!

Заранее спасибо за вменяемые ответы :)
Алексей1153
а geometry() что возхвращает ?
anater
Цитата(Алексей1153 @ 6.10.2010, 10:50) *
а geometry() что возхвращает ?

аналогично. тоже что-то нереальное. но на экране товсе как надо :(
менеджер размещений все двадцать штук аккуратненько вписал во фрейм.
а вот рельные размеры никак... может имеет значение что я их пытаюсь получить еще в конструкторе?
wiz29
этот вызов нужно делать не в конструкторе, поставь его в resizeEvent и будет тебе счастье:)
Авварон
Да, именно это и имеет значение - Qt не знает как вы будете показывать свой виджет - через show(), showMaximized() или showFullScreen() и не может вернуть размер.
Алексей1153
в конструкторе он тоже должен работать. Но косяк не в этом. А в том, что вызывать для получения размеров нужно в обработчике paintEvent - ведь там будешь графику рисовать свою
ufna
Цитата(Алексей1153 @ 6.10.2010, 12:20) *
в конструкторе он тоже должен работать. Но косяк не в этом. А в том, что вызывать для получения размеров нужно в обработчике paintEvent - ведь там будешь графику рисовать свою


дак в конструкторе оно и работает. Именно такой размер имеет виджет в случае автора. Только потом он его размещает к примеру на лейауте - и при размещении размер изменяется. А если сделать просто show() - то будет то, что size() в конструкторе и даст.

Потому эти данные нужно брать в paintEvent, если это именно для отрисовки нужно.
anater
Всем огромное спасибо за участие!

paintEvent куально помог!
:clapping:
Litkevich Yuriy
Цитата(Алексей1153 @ 6.10.2010, 15:20) *
в конструкторе он тоже должен работать.
нет, т.к. конструктор это ещё процесс создания объекта.
Алексей1153
Litkevich Yuriy, и что ? :) QWidget уже вызвался.
ufna
да блин, а оно че, не работает? В моем понимании "не работает" - значит приложение падает и ругается. Оно работает. Как и должно работать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.