Нужно получить события прихода и ухода курсора для сцены. Поскольку для сцены нужных событий нет, делаю потомка от 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 - нет. Похожие проблемы не гуглятся, потому спрашиваю здесь: что я делаю не так?