Название: Отследить что окно(QWidget) скрылось Отправлено: ecspertiza от Октябрь 19, 2012, 09:58 Про всякие там isVisible() я уж конечно вкурсе :) Есть следующая проблема например у юзверя стоит винда и он использует тему aero, естественно окна со свистелками\пирделками сворачиваются и разворачиваются. Но возникает вопрос как отловить конец анимации окна ? То есть мне нужен функционал примерно такой, показать окно только после того как первое свернулось, причем полностью, расчитать время анимации я конечно же не могу, может там еще какая шайтан тема стоять будет, где окно в два раза дольше сворачивается. QWidget::isVisible() возвращает false сразу после того как вызвали QWidget::hide(). Вот и возникает вопрос как отловить что окна не видно на экране ? Я попробовал извратиться и сделать так
Код: mainwindow->hide(); но стало быть это и не работает как раз из за isVisible. Название: Re: Отследить что окно(QWidget) скрылось Отправлено: Bepec от Октябрь 19, 2012, 10:21 Без платформозависимого кода - никак.
Насколько я помню, свистелки-перделки дело рук оконного менеджера. Соответственно поймать момент скрытия без платформозависимого кода нельзя. PS есть так же интересные прожки типа доп рабочих столов. Когда окно вроде скрыто, а на другом столе спокойно стоит :D Название: Re: Отследить что окно(QWidget) скрылось Отправлено: Serr500 от Октябрь 19, 2012, 11:23 показать окно только после того как первое свернулось Это так необходимо?Соответственно поймать момент скрытия без платформозависимого кода нельзя. Там и платформозависимым ловить нечего. Насколько мне известно, винда не сообщает о запуске/завершении анимации окна. Максимум что можно сделать - вычитать из реестра время сворачивания/разворачивания и сделать задержку.Название: Re: Отследить что окно(QWidget) скрылось Отправлено: ecspertiza от Октябрь 19, 2012, 11:35 Это так необходимо? Да, программа делает скрин с экрана, и если вызвать функцию скрина из главного окна, то половина окна видна на скрине, это как то совсем не гуд :) Мысль с задержкой кажется не плохой, но откуда из реестра можно прочитать инфу о скорости анимации ? Название: Re: Отследить что окно(QWidget) скрылось Отправлено: Serr500 от Октябрь 19, 2012, 12:45 ХЗ где она там. Не могу сказать. Я бы поставил твикер типа TuneUp, поменял значение, а затем посмотрел бы, что изменилось в реестре.
Название: Re: Отследить что окно(QWidget) скрылось Отправлено: Bepec от Октябрь 19, 2012, 13:11 В принципе можно порыскать по реестрам и функциям.
Месяца 2 назад натыкался в интернете на компонент, реализующий красивый уход с экрана с winApi - мб там что то такое и было. В общем поищу. update: нашёл, правда там использовался мини-костыль. Точнее аналогия с winApi. Интересный факт: При нажатии иконки свернуть всё, все окна сворачиваются без анимации. Полезный факт: по заверениям той темы, windows передвигает desktop вверх на его размер, затем вызывая minimize у окон. Вывод: если не получится сделать как хочется(узнать время сворачивания), можно сделать костылёк - двигать окно за пределы экрана, делать скриншот, минимизировать. |