Здравствуйте, гость ( Вход | Регистрация )
refixs | Дата 22.3.2010, 3:04 |
Да, я понял свою ошибку. Я не сделал привязку фильтра через installEventFilter. Отпишусь как вернусь к задаче. Пока меня устраивает решение описанное выше. | |
Litkevich Yuriy | Дата 21.3.2010, 12:26 |
Да, а MainWindow это основное. Фильтр я пробовал и туда и туда ставить. отсюда вывод - ты не понимаешь, что такое "фильтр событий", К стати говоря я так и не увидел кода, который устанавливает фильтр событий. Ты должен в MainWindow установить фильтр событий на интересующий тебя экземпляр класса NotifyWindow Читай асистент bool QObject::eventFilter ( QObject * watched, QEvent * event ) [virtual] там очень простой и понятный пример |
|
refixs | Дата 21.3.2010, 12:02 |
NotifyWindow - это всплывающее окно? Да, а MainWindow это основное. Фильтр я пробовал и туда и туда ставить. не знаю ничего про отладчик, у меня один отладчик: qDebug() << "Название функции"
Вывод приложения: Lowest section in C:\WINDOWS\system32\xpsp2res.dll is .rsrc at 00011000 Добавил еще в конструкторы на всякий случай (чтоб проверить или qDebug() вообще срабатывает), получил такой вот вывод: Цитата MainWindow::MainWindow Lowest section in C:\WINDOWS\system32\xpsp2res.dll is .rsrc at 00011000 NotifyWindow::NotifyWindow NotifyWindow::NotifyWindow |
|
Litkevich Yuriy | Дата 21.3.2010, 3:38 |
NotifyWindow - это всплывающее окно? но какая разница какой код если отладчик не останавливается в начале функции? не знаю ничего про отладчик, у меня один отладчик:qDebug() << "Название функции" |
|
refixs | Дата 21.3.2010, 3:20 |
Там два сообщения, отдельно добавить не получилось. В первом я сказал, что eventFilter не срабатывает, отладчик не останавливается в начале функции. Во втором сообщении я рассказал о том как решил решить свою проблему. Вот один из вариантов использования eventFilter:
но какая разница какой код если отладчик не останавливается в начале функции? |
|
Litkevich Yuriy | Дата 21.3.2010, 2:49 |
Что-то у меня до eventFilter вообще ничего не доходит и тот код, что ты привел, как бы не согласуются.Ты понимаешь что есть такие вещи как Фильтры событий? (eventFilter, installEventFilter) |
|
refixs | Дата 21.3.2010, 2:30 |
Точка остановки стоит в самом начале метода. Запускаю в режиме отладки (в QtCreator) и не останавливается ни при каких обстоятельствах. Наверно все таки вся загвоздка в этом activateWindow, если без него то окна нормально исчезают.
Если убрать "мигание" на панели задач, то вот так работает. А мигание я наверно сделаю при условии что всплывающие окна скрыты. |
|
Litkevich Yuriy | Дата 21.3.2010, 2:20 |
Что-то у меня до eventFilter покажи как настраиваешь перехват событий |
|
refixs | Дата 21.3.2010, 2:19 |
Что-то у меня до eventFilter вообще ничего не доходит не в основном окне не в NotifyWindow. ЗЫ. С 6000ым сообщением Еще такой момент, всплывающее сообщение подкрепляется периодическими вызовами activateWindow у основного окна. activateWindow вызывается раз в 1 секунду заставляя основное окошко мигать оранжевым на панели задач. В итоге получается как-то так: - Появляется всплывающее окно - Щелкаем по нему, оно получает фокус ввода - Срабатывает activateWindow, фокус ввода получает MainWindow |
|
Litkevich Yuriy | Дата 21.3.2010, 0:14 |
refixs, а правым убирать всплывающее не изменяя текущего активного окна. можно в основном окне поставить фильтр событий на всплывающее. Если в обработчике фильтра событие не игнорировать, т.е. функцияbool MyWindow::eventFilter ( QObject * watched, QEvent * event ) [virtual] вернёт true то, событие не дойдёт до всплывающего окна, следовательно оно не получит фокус ввода (я так думаю). |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 11.12.2024, 13:48 |