Название: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения Отправлено: spectre71 от Июнь 25, 2009, 10:26 QWidget::resizeEvent - происходит при изменении размера QWidget.
Но проблема в том что при изменении размера родительского QWidget - resizeEvent для дочернего может быть вызван несколько раз, и с разными значениями размеров. Как определить последний вызов в цепочке вызов resizeEvent для QWidget ? Название: Re: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения Отправлено: SABROG от Июнь 25, 2009, 10:38 installEventFilter для проблемного виджета и делай с событием что душа пожелает.
Название: Re: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения Отправлено: spectre71 от Июнь 25, 2009, 10:59 installEventFilter для проблемного виджета и делай с событием что душа пожелает. Чем это поможет? И зачем мне делать installEventFilter для виджета если у него и так переопределен resizeEvent. Задача не сделать с событием что душа пожелает, а отловить последнее из серии. Название: Re: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения Отправлено: ритт от Июнь 25, 2009, 11:31 уже было - ищи
Название: Re: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения Отправлено: spectre71 от Июнь 25, 2009, 12:16 уже было - ищи Нашел только http://www.prog.org.ru/topic_6818_0.html (http://www.prog.org.ru/topic_6818_0.html), но там нет решения!Название: Re: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения Отправлено: SABROG от Июнь 25, 2009, 13:55 Чем это поможет? И зачем мне делать installEventFilter для виджета если у него и так переопределен resizeEvent. Задача не сделать с событием что душа пожелает, а отловить последнее из серии. Поставь фильтр на нужное окно, когда придет событие QResizeEvent - сними фильтр (uninstall), поставь событие в очередь еще раз через QApplication::sendEvent(). Как только управление оттуда вернется это и будет момент, когда все дети получили свои resize эвенты. Название: Re: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения Отправлено: spectre71 от Июнь 25, 2009, 14:09 Поставь фильтр на нужное окно, когда придет событие QResizeEvent - сними фильтр (uninstall), поставь событие в очередь еще раз через QApplication::sendEvent(). Как только управление оттуда вернется это и будет момент, когда все дети получили свои resize эвенты. А кто сказал что все resizeEvent у дочернего отработают на resizeEvent у родителя. Даже если это так resizeEvent у родителя так же может быть вызван много раз подряд! И что вешать фильтр на весь стек родителей? Название: Re: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения Отправлено: SABROG от Июнь 25, 2009, 14:14 Даже если это так resizeEvent у родителя так же может быть вызван много раз подряд! Для этого и нужен removeEventFilter перед sendEvent. Один раз поймал, снял фильтр, отправил еще раз тоже самое, но от "своего лица" (метода), чтобы поймать момент возврата. Название: Re: QWidget::resizeEvent(QResizeEvent*e)Как отловить момент завершения Отправлено: spectre71 от Июнь 25, 2009, 14:26 Даже если это так resizeEvent у родителя так же может быть вызван много раз подряд! Для этого и нужен removeEventFilter перед sendEvent. Один раз поймал, снял фильтр, отправил еще раз тоже самое, но от "своего лица" (метода), чтобы поймать момент возврата. Есть QWidget - MyWidget для которого я хочу определить последний ресайз из цепочки ресайзов, что дальше? |