Название: Класс QtSpyOnApp для мониторинга событий в Qt. Отправлено: SABROG от Май 07, 2010, 21:30 Написал не хитрый класс на базе QApplication, который выводит в консоль все сообщения от ОС приходящие окну:
Все события Qt:
Все эмиты сигналов и вызовы слотов:
Для фильтрации сигналов и слотов используется хак, такой же как и в модуле QTestLib. Писалось под версию Qt 4.6.2. Пример вывода под Windows: Код: [QEVENT] QWindowsStyle(windows 318007656) QEvent::Timer Под Linux: Код: [OS ] PropertyNotify atom 0x10d (_NET_WM_SYNC_REQUEST_COUNTER), time 92645617, state: PropertyNewValue Для эксперимента поместите на форму QProgressBar, возможно будете удивлены. Название: Re: Класс для мониторинга событий в Qt. Отправлено: Karl-Philipp от Май 07, 2010, 21:39 ого себе, столько событий! :)
Название: Re: Класс для мониторинга событий в Qt. Отправлено: KuZ от Май 07, 2010, 22:01 Открыл файл filterAllEvents.pro с помощью Qt Creator, при сборке выдает вот это в "консоль сборки", подскажите как решить:
Код: Выполняется сборка проекта filterAllEvents... Название: Re: Класс для мониторинга событий в Qt. Отправлено: SABROG от Май 07, 2010, 23:44 Эти строки повторяются очень много раз. Извиняюсь если не в тему вопрос. У тебя не правильно настроен QtCreator или переменные окружения. Название: Re: Класс для мониторинга событий в Qt. Отправлено: lit-uriy от Май 07, 2010, 23:58 offtop
А у кого тут не давно make с ума сходил? симптомы похожи Название: Re: Класс для мониторинга событий в Qt. Отправлено: KuZ от Май 08, 2010, 00:28 Эти строки повторяются очень много раз. Извиняюсь если не в тему вопрос. У тебя не правильно настроен QtCreator или переменные окружения. Название: Re: Класс QtSpyOnApp для мониторинга событий в Qt. Отправлено: zenden от Май 08, 2010, 13:21 А что не так с прогрессбаром? расскажите, а то мне лень компилировать пример
Название: Re: Класс QtSpyOnApp для мониторинга событий в Qt. Отправлено: Karl-Philipp от Май 08, 2010, 13:46 А что не так с прогрессбаром? расскажите, а то мне лень компилировать пример Все в порядке с прогрессбаром. Наверное, SABROG хотел обратить внимание на большое количество событий, возникающих при активизации прогрессбара :)Название: Re: Класс QtSpyOnApp для мониторинга событий в Qt. Отправлено: SABROG от Май 08, 2010, 14:31 Угу, Qt регистрирует таймер в ОС, который "спамит" событиями WM_TIMER несколько раз в секунду для того, чтобы стиль вызывал update() для прогрессбаров. Сделано, чтобы прогресс был виден, когда выполняется долгая операция блокирующая обновление интерфейса.
Название: Re: Класс QtSpyOnApp для мониторинга событий в Qt. Отправлено: zenden от Май 08, 2010, 17:23 Так если выполняется "долгая операция блокирующая обновление интерфейса.", как сообщения WM_TIMER будут доходить?
По-моему это сделано чтобы просто отображать анимацию Название: Re: Класс QtSpyOnApp для мониторинга событий в Qt. Отправлено: SABROG от Май 09, 2010, 09:31 Так если выполняется "долгая операция блокирующая обновление интерфейса.", как сообщения WM_TIMER будут доходить? Может быть. Вот только нафиг эти эвенты нужны, если у меня визуально ничего не меняется.По-моему это сделано чтобы просто отображать анимацию --- Тролли согласны с тем, что постоянно активированный таймер не нужен, если в нем нет необходимости: Цитировать It is needed because if (bar->minimum() == 0 && bar->maximum() == 0), the progressbar is animated. But it is true that for most of the progressbar, there will not be any animation in the QWindowsStyle. So we could try to only start a timer if needed. Название: Re: Класс QtSpyOnApp для мониторинга событий в Qt. Отправлено: DpoHro от Май 31, 2010, 09:40 Народ чето я под x11 не могу собрать примерец с qt4.6.2
Название: Re: Класс QtSpyOnApp для мониторинга событий в Qt. Отправлено: mkv от Май 31, 2010, 10:23 не линкуется....
$ make -j3 uic widget.ui compiling main.cpp compiling QtSpyOnApp.cpp compiling QtSpyOnAppX11.cpp moc widget.h moc QtSpyOnApp.h compiling widget.cpp compiling tmp/release/moc_widget.cpp QtSpyOnApp.cpp: In function 'bool osEventFilter(void*)': QtSpyOnApp.cpp:86: предупреждение: unused variable 'handlersCount' compiling tmp/release/moc_QtSpyOnApp.cpp linking filterAllEvents tmp/release/QtSpyOnApp.o:(.rodata+0x20): undefined reference to `printX11DummyHandler(_XEvent*)' tmp/release/QtSpyOnApp.o:(.rodata+0x24): undefined reference to `printX11DummyHandler(_XEvent*)' ..... подскажите, что нужно подправить? Название: Re: Класс QtSpyOnApp для мониторинга событий в Qt. Отправлено: SABROG от Май 31, 2010, 11:21 Сори мой косяк, перевыложил.
|