Всем доброго времени суток!
Господа, подскажите, можно ли ловить события происходящие за пределами моего приложения и если да то каким образом?
Иначе говоря есть главное окно (QMainWindow), для которого можно переопределить соответствующую ф-цию event и ловить в пределах этого окна любые события. Тоже самое можно с успехом делать и другими способами.
Но эти все способы не будут работать если события происходят за пределами формы, как например клик мышью по рабочему столу, который собственно и нужно ловить.
Из ман я понял что такое возможно сделать (см описание класса QEvent: "In general, events come from the underlying window system (spontaneous() returns true)..."), но как мне не совсем ясно. Пробовал переопределять event как классе производном как от QMainWindow, так и QApplication. Работает только в пределах окна.
Пробовал по таймеру определять состояние кнопок мыши (if (QApplication::mouseButtons() == Qt::LeftButton) ...), работает тоже только в пределах окна.
Я уверен, что решение должно существовать. Надежду даёт эта ф-ция - bool QEvent::spontaneous () const
Returns true if the event originated outside the application (a system event); otherwise returns false.
Но блин, как всё это организовать не пойму.
З.Ы.
Необходимость в этом возникла в связи с использованием убогого попуп меню в TrayIcon (
http://svn.berlios.de/viewcvs/wolfpack/trunk/server/src/gui/trayicon/), которое само не закрывается если кликнуть на свободном пространстве рабочего стола. Сиё поведение меня очень раздражает, поэтому мн необходимо самостоятельно его закрывать по клику на рабочем столе.
Надеюсь ясно выразился, спасибо. :wink: