Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: nike1987 от Ноябрь 24, 2011, 17:23



Название: Выход курсора за область QGraphics[Решено]
Отправлено: nike1987 от Ноябрь 24, 2011, 17:23
Имеется поле QGraphics, которое вставлено в виджет(QWidget) панели управления, в нём у меня переопределён метод MouseMoveEvent для отлавливания позиции курсора, вопрос заключается в том, что мне нужно отловить момент когда курсор выходит за границы поля QGraphics?


Название: Re: Выход курсора за область QGraphics
Отправлено: madRoger от Ноябрь 24, 2011, 18:05
реализовать eventFilter. Применить его для QGraphics. В фильтре проверять тип события, если == QEvent::HoverLeave - это и есть момент выхода курсора за границы объекта.


Название: Re: Выход курсора за область QGraphics
Отправлено: nike1987 от Ноябрь 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);

}


Название: Re: Выход курсора за область QGraphics
Отправлено: madRoger от Ноябрь 25, 2011, 13:44
фильтр еще нужно установить для объекта. В конструкторе добавь:
Код:
installEventFilter(this);

ЗЫ. Поправь: при обнаружении события сначала qDebug, потом return.


Название: Re: Выход курсора за область QGraphics
Отправлено: Bepec от Ноябрь 25, 2011, 13:51
эм. а что вы делаете?

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

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

Переопределяется на раз.


Название: Re: Выход курсора за область QGraphics
Отправлено: nike1987 от Ноябрь 25, 2011, 14:01
Спасибо, метод leaveEvent как раз то что нужно)).


Название: Re: Выход курсора за область QGraphics
Отправлено: Bepec от Ноябрь 25, 2011, 14:05
тему переобзови с надписью [РЕШЕНО] и закрой.