Russian Qt Forum
Ноябрь 25, 2024, 20:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выход курсора за область QGraphics[Решено]  (Прочитано 3339 раз)
nike1987
Гость
« : Ноябрь 24, 2011, 17:23 »

Имеется поле QGraphics, которое вставлено в виджет(QWidget) панели управления, в нём у меня переопределён метод MouseMoveEvent для отлавливания позиции курсора, вопрос заключается в том, что мне нужно отловить момент когда курсор выходит за границы поля QGraphics?
« Последнее редактирование: Ноябрь 25, 2011, 17:36 от nike1987 » Записан
madRoger
Гость
« Ответ #1 : Ноябрь 24, 2011, 18:05 »

реализовать eventFilter. Применить его для QGraphics. В фильтре проверять тип события, если == QEvent::HoverLeave - это и есть момент выхода курсора за границы объекта.
Записан
nike1987
Гость
« Ответ #2 : Ноябрь 25, 2011, 13:10 »

Попробовал просто переопределить eventFilter, но у меня программа туда даже не заходит.Мб делаю что не так?

Код:
class MapViewer : public QGraphicsView
{
    Q_OBJECT
protected:
    bool eventFilter(QObject *obj, QEvent *ev);
}

bool MapViewer::eventFilter(QObject *obj, QEvent *ev)
{
    if(obj == this)
    {
        if(ev->type() == QEvent::HoverLeave)
        {
            ..................stuff..................
            return QObject::eventFilter(obj, ev);
            qDebug("eventFilter");
        }
        qDebug("event");
        return QObject::eventFilter(obj, ev);
    }
    qDebug("event");
    return QObject::eventFilter(obj, ev);

}
Записан
madRoger
Гость
« Ответ #3 : Ноябрь 25, 2011, 13:44 »

фильтр еще нужно установить для объекта. В конструкторе добавь:
Код:
installEventFilter(this);

ЗЫ. Поправь: при обнаружении события сначала qDebug, потом return.
« Последнее редактирование: Ноябрь 25, 2011, 13:51 от madRoger » Записан
Bepec
Гость
« Ответ #4 : Ноябрь 25, 2011, 13:51 »

эм. а что вы делаете?

Есть же метод enterEvent и leaveEvent;

Для тех кто незнает,они отвечаеют за вход мыши в пределы  и выход мыши за пределы виджета.

Переопределяется на раз.
Записан
nike1987
Гость
« Ответ #5 : Ноябрь 25, 2011, 14:01 »

Спасибо, метод leaveEvent как раз то что нужно)).
Записан
Bepec
Гость
« Ответ #6 : Ноябрь 25, 2011, 14:05 »

тему переобзови с надписью [РЕШЕНО] и закрой.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 20.