diff --git a/src/areachart/areachartitem.cpp b/src/areachart/areachartitem.cpp index b801923..040d7f3 100644 --- a/src/areachart/areachartitem.cpp +++ b/src/areachart/areachartitem.cpp @@ -40,6 +40,7 @@ AreaChartItem::AreaChartItem(QAreaSeries *areaSeries, ChartPresenter *presenter) m_lower(0), m_pointsVisible(false) { + setAcceptHoverEvents(true); setZValue(ChartPresenter::LineChartZValue); m_upper = new AreaBoundItem(this, m_series->upperSeries(), presenter); if (m_series->lowerSeries()) @@ -49,6 +50,7 @@ AreaChartItem::AreaChartItem(QAreaSeries *areaSeries, ChartPresenter *presenter) QObject::connect(m_series, SIGNAL(visibleChanged()), this, SLOT(handleUpdated())); QObject::connect(m_series, SIGNAL(opacityChanged()), this, SLOT(handleUpdated())); QObject::connect(this, SIGNAL(clicked(QPointF)), areaSeries, SIGNAL(clicked(QPointF))); + QObject::connect(this, SIGNAL(hovered(QPointF,bool)), areaSeries, SIGNAL(hovered(QPointF,bool))); handleUpdated(); } @@ -147,6 +149,20 @@ void AreaChartItem::mousePressEvent(QGraphicsSceneMouseEvent *event) ChartItem::mousePressEvent(event); } +void AreaChartItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) +{ + emit hovered(m_upper->calculateDomainPoint(event->pos()), true); + event->accept(); +// QGraphicsItem::hoverEnterEvent(event); +} + +void AreaChartItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) +{ + emit hovered(m_upper->calculateDomainPoint(event->pos()), false); + event->accept(); +// QGraphicsItem::hoverEnterEvent(event); +} + #include "moc_areachartitem_p.cpp" QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/areachart/areachartitem_p.h b/src/areachart/areachartitem_p.h index 7290d0c..bb2fc55 100644 --- a/src/areachart/areachartitem_p.h +++ b/src/areachart/areachartitem_p.h @@ -58,9 +58,12 @@ public: protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); + void hoverEnterEvent(QGraphicsSceneHoverEvent *event); + void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); Q_SIGNALS: - void clicked(const QPointF &point); + void clicked(const QPointF &point); + void hovered(const QPointF &point, bool state); public Q_SLOTS: void handleUpdated(); diff --git a/src/areachart/qareaseries.h b/src/areachart/qareaseries.h index 70d6a02..637a8bb 100644 --- a/src/areachart/qareaseries.h +++ b/src/areachart/qareaseries.h @@ -67,7 +67,8 @@ public: bool pointsVisible() const; Q_SIGNALS: - void clicked(const QPointF &point); + void clicked(const QPointF &point); + void hovered(const QPointF &point, bool state); void selected(); void colorChanged(QColor color); void borderColorChanged(QColor color);