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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения  (Прочитано 7294 раз)
spectre71
Гость
« : Июнь 25, 2009, 10:26 »

QWidget::resizeEvent - происходит при изменении размера QWidget.
Но проблема в том что при изменении размера родительского QWidget - resizeEvent для дочернего может быть вызван несколько раз, и с разными значениями размеров.
Как определить последний вызов в цепочке вызов resizeEvent для QWidget ?
Записан
SABROG
Гость
« Ответ #1 : Июнь 25, 2009, 10:38 »

installEventFilter для проблемного виджета и делай с событием что душа пожелает.
Записан
spectre71
Гость
« Ответ #2 : Июнь 25, 2009, 10:59 »

installEventFilter для проблемного виджета и делай с событием что душа пожелает.
Чем это поможет?
И зачем мне делать installEventFilter для виджета если у него и так переопределен resizeEvent.
Задача не сделать с событием что душа пожелает, а отловить последнее из серии.
Записан
ритт
Гость
« Ответ #3 : Июнь 25, 2009, 11:31 »

уже было - ищи
Записан
spectre71
Гость
« Ответ #4 : Июнь 25, 2009, 12:16 »

уже было - ищи
Нашел только http://www.prog.org.ru/topic_6818_0.html, но там нет решения!
Записан
SABROG
Гость
« Ответ #5 : Июнь 25, 2009, 13:55 »

Чем это поможет?
И зачем мне делать installEventFilter для виджета если у него и так переопределен resizeEvent.
Задача не сделать с событием что душа пожелает, а отловить последнее из серии.

Поставь фильтр на нужное окно, когда придет событие QResizeEvent - сними фильтр (uninstall), поставь событие в очередь еще раз через QApplication::sendEvent(). Как только управление оттуда вернется это и будет момент, когда все дети получили свои resize эвенты.
Записан
spectre71
Гость
« Ответ #6 : Июнь 25, 2009, 14:09 »

Поставь фильтр на нужное окно, когда придет событие QResizeEvent - сними фильтр (uninstall), поставь событие в очередь еще раз через QApplication::sendEvent(). Как только управление оттуда вернется это и будет момент, когда все дети получили свои resize эвенты.

 А кто сказал что все resizeEvent у дочернего отработают на resizeEvent у родителя.
 Даже если это так resizeEvent у родителя так же может быть вызван много раз подряд! И что вешать фильтр на весь стек родителей?

Записан
SABROG
Гость
« Ответ #7 : Июнь 25, 2009, 14:14 »

Даже если это так resizeEvent у родителя так же может быть вызван много раз подряд!

Для этого и нужен removeEventFilter перед sendEvent. Один раз поймал, снял фильтр, отправил еще раз тоже самое, но от "своего лица" (метода), чтобы поймать момент возврата.
Записан
spectre71
Гость
« Ответ #8 : Июнь 25, 2009, 14:26 »

Даже если это так resizeEvent у родителя так же может быть вызван много раз подряд!

Для этого и нужен removeEventFilter перед sendEvent. Один раз поймал, снял фильтр, отправил еще раз тоже самое, но от "своего лица" (метода), чтобы поймать момент возврата.
Тогда объясни подробнее! Я не понял что для кого и когда делать и на кого вешать?
Есть QWidget - MyWidget для которого я хочу определить последний ресайз из цепочки ресайзов, что дальше?

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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