LINUX.ORG.RU

Не получаю enterEvent

 enterevent,


0

1

Нужно получить события прихода и ухода курсора для сцены. Поскольку для сцены нужных событий нет, делаю потомка от QGraphicsView:

class DrawMapView : public QGraphicsView
{
    Q_OBJECT

public:
    explicit DrawMapView(QWidget *parent = 0);
    ~DrawMapView();

    void setScene(DrawMapScene *scene);

protected:
    void enterEvent(QEvent * event);
    void leaveEvent(QEvent * event);

private:
    DrawMapScene * m_scene;
};

DrawMapView::DrawMapView(QWidget *parent) :
    QGraphicsView(parent)
{
   setMouseTracking(true);

    m_scene = 0;
}


DrawMapView::~DrawMapView()
{

}

void DrawMapView::setScene(DrawMapScene *scene)
{
    m_scene = scene;
    qDebug() << "setScene" << m_scene;

    QGraphicsView::setScene(scene);
}

void DrawMapView::enterEvent(QEvent *event)
{
    qDebug() << "enterEvent" << m_scene;
    if(m_scene)
        m_scene->showCursor();

    QGraphicsView::enterEvent(event);
}

void DrawMapView::leaveEvent(QEvent *event)
{
    qDebug() << "leaveEvent" << m_scene;
    if(m_scene)
        m_scene->hideCursor();

    QGraphicsView::leaveEvent(event);
}

leaveEvent срабатывает как положено, enterEvent - нет. Похожие проблемы не гуглятся, потому спрашиваю здесь: что я делаю не так?

★★★★★

Ответ на: комментарий от Dendy

Поставил

qDebug() << "viewportEvent" << event->type();

Сыпет типом №5 при перемещении мыши, 11 - при выходе, на входе - ничего

unC0Rr ★★★★★ ()
Ответ на: комментарий от zJes

Даже если фокус навожу - та же история. Траблы, которые ты припоминаешь, - это скорее всего setMouseTracking(true);, который я делаю

unC0Rr ★★★★★ ()
Ответ на: комментарий от unC0Rr

Не, точно не мышетраккинг.
А сцена этот евент не жрет? К примеру у тебя там итем и отрабатывает GraphicsSceneHoverEnter?

Хотя не буду гадать. А пробовать лень. :)

zJes ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.