А можно небольшой примерчик с notify?
Помещать этот код в notify есть смысл если оно уже перекрыто (чтобы лишних хвильтров не плодить). Впрочем код примерно одинаков
C++ (Qt)
bool MyGView::eventFilter(QObject *obj, QEvent *event)
// bool MyApp::notify(QObject *obj, QEvent *event)
{
if (theMouseGrabFlag) {
switch (event->type()) {
case QEvent::MouseMove:
case QEvent::MousePress:
case QEvent::MouseRelease:
MyHandleMouse(obj, event);
break;
}
}
return false;
}
// установка
qApp->installEventFilter(myGView);
В обработчике MyHandleMouse решаете свои проблемы и когда сбросить theMouseGrabFlag учитывая
а) событие обычно приходит "в 2 экземплярах" - сначала для QWindow а потом для виджета
б) локальная позиция мыша (static_cast<QMouseEvent *> (event)) может быть для другого виджета - ну возьмете из глобальной
в) "Жрать" MousePress/Release не надо, будут проблемы, всегда возвращайте false, пусть событие обрабатывается дальше
P.S. В доке Qt разрабы не рекомендуют использовать данные методы.
Та отож