crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Реальный размер QWidget
anater
  опции профиля:
сообщение 6.10.2010, 10:45
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 25.12.2009
Пользователь №: 1335

Спасибо сказали: 0 раз(а)




Репутация:   0  


Итак нубский вопрос.
Создаю свой виджет
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
  опции профиля:
сообщение 6.10.2010, 10:50
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2933
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а geometry() что возхвращает ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
anater
  опции профиля:
сообщение 6.10.2010, 11:04
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 25.12.2009
Пользователь №: 1335

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 6.10.2010, 10:50) *
а geometry() что возхвращает ?

аналогично. тоже что-то нереальное. но на экране товсе как надо :(
менеджер размещений все двадцать штук аккуратненько вписал во фрейм.
а вот рельные размеры никак... может имеет значение что я их пытаюсь получить еще в конструкторе?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 6.10.2010, 11:11
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


этот вызов нужно делать не в конструкторе, поставь его в resizeEvent и будет тебе счастье:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Авварон
  опции профиля:
сообщение 6.10.2010, 11:13
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 99
Регистрация: 26.4.2009
Пользователь №: 709

Спасибо сказали: 14 раз(а)




Репутация:   0  


Да, именно это и имеет значение - Qt не знает как вы будете показывать свой виджет - через show(), showMaximized() или showFullScreen() и не может вернуть размер.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.10.2010, 11:20
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2933
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


в конструкторе он тоже должен работать. Но косяк не в этом. А в том, что вызывать для получения размеров нужно в обработчике paintEvent - ведь там будешь графику рисовать свою
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 6.10.2010, 11:23
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


Цитата(Алексей1153 @ 6.10.2010, 12:20) *
в конструкторе он тоже должен работать. Но косяк не в этом. А в том, что вызывать для получения размеров нужно в обработчике paintEvent - ведь там будешь графику рисовать свою


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

Потому эти данные нужно брать в paintEvent, если это именно для отрисовки нужно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
anater
  опции профиля:
сообщение 6.10.2010, 12:09
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 25.12.2009
Пользователь №: 1335

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем огромное спасибо за участие!

paintEvent куально помог!
:clapping:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.10.2010, 16:50
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Алексей1153 @ 6.10.2010, 15:20) *
в конструкторе он тоже должен работать.
нет, т.к. конструктор это ещё процесс создания объекта.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.10.2010, 17:22
Сообщение #10


фрилансер
******

Группа: Участник
Сообщений: 2933
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Litkevich Yuriy, и что ? :) QWidget уже вызвался.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.8.2022, 0:48