Название: Поймать изменение размера QDockWidget Отправлено: bosfor от Июнь 09, 2010, 15:34 Подскажите плиз.
Имею несколько QDockWidget`тов на QMainWindow как мне отловить изменение размеров приклееных dock виджетов ? Название: Re: Поймать изменение размера QDockWidget Отправлено: DS_tm от Июнь 10, 2010, 11:30 Создаете класс наследник от QDockWidget и переопределяете
void QWidget::resizeEvent (QResizeEvent *event) [virtual protected] таким образом, чтобы она высылала сигнал. Название: Re: Поймать изменение размера QDockWidget Отправлено: Barmaglodd от Июнь 10, 2010, 11:37 Можно eventFilter установить и от QDockWidget не надо наследоваться.
Название: Re: Поймать изменение размера QDockWidget Отправлено: DS_tm от Июнь 10, 2010, 11:44 Можно eventFilter установить и от QDockWidget не надо наследоваться. Ну или так да, хотя меня фильтрация сообщений не прельщает своей плохой наглядностью, да и судя по вопросу человеку будет проще наследовать нежели изучать механизм фильтрации.Название: Re: Поймать изменение размера QDockWidget Отправлено: bosfor от Июнь 10, 2010, 17:08 Спасибо ! Первый вариант переопределения функции выручил. Правда пришлось свой сигнал делать
Код: void MyResizeEvent(QResizeEvent *event); Название: Re: Поймать изменение размера QDockWidget Отправлено: Авварон от Июнь 10, 2010, 17:44 я бы так не делал... важно понимать почему есть система эвентов, а не посылка сигнала аппликейшном, сконнекченным с классом. Такие события как перемещение мыши и изменение размера происходят часто, а сигналы/слоты медленные (не очень, но все ж). Так что стоит подумать, адекватно ли такое частое кидание сигнала на каждый приход резайз эвента.
Название: Re: Поймать изменение размера QDockWidget Отправлено: DS_tm от Июнь 10, 2010, 20:40 Согласен, делегирование обязанности главному окну с помощью сигнала решение не лучшее, вся прелесть сигналов в том, что инициатор сигнала ничего не знает о получателе(ях), но за это приходиться платить производительностью. В Вашем случае лучше передать указатель на объект главного окна в конструкторе класса наследника QDockWidget (а Вы это наверняка итак делаете) а далее в обработчике resize вызывать соответствующую функцию главного окна напрямую, передавая в качестве параметра this.
Код
Название: Re: Поймать изменение размера QDockWidget Отправлено: Авварон от Июнь 10, 2010, 20:47 в нашем случае на доквиджет вешается эвент фильтр - само главное окно. Криво архитектурно (но лишь потенциально), зато просто и производительно
Название: Re: Поймать изменение размера QDockWidget Отправлено: bosfor от Июнь 11, 2010, 08:47 Код спасибо, учту рекомендации. в нашем случае на доквиджет вешается эвент фильтр - само главное окно. Криво архитектурно (но лишь потенциально), зато просто и производительно механизмом фильтра непользовался, буду благодарен за ссылочуку или короткий пример кода. |