##// END OF EJS Templates
legendmarker hover signal test and fix
sauimone -
r2210:68629cc35cc4
parent child
Show More
@@ -39,9 +39,18 LegendMarkerItem::LegendMarkerItem(QLegendMarkerPrivate *marker, QGraphicsObject
39 m_rectItem(new QGraphicsRectItem(this)),
39 m_rectItem(new QGraphicsRectItem(this)),
40 m_margin(4),
40 m_margin(4),
41 m_space(4),
41 m_space(4),
42 m_hovering(false),
42 m_pressPos(0, 0)
43 m_pressPos(0, 0)
43 {
44 {
44 m_rectItem->setRect(m_markerRect);
45 m_rectItem->setRect(m_markerRect);
46 setAcceptsHoverEvents(true);
47 }
48
49 LegendMarkerItem::~LegendMarkerItem()
50 {
51 if (m_hovering) {
52 emit m_marker->q_ptr->hovered(false);
53 }
45 }
54 }
46
55
47 void LegendMarkerItem::setPen(const QPen &pen)
56 void LegendMarkerItem::setPen(const QPen &pen)
@@ -160,6 +169,21 QSizeF LegendMarkerItem::sizeHint(Qt::SizeHint which, const QSizeF& constraint)
160 return sh;
169 return sh;
161 }
170 }
162
171
172 void LegendMarkerItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
173 {
174 Q_UNUSED(event)
175 m_hovering = true;
176 emit m_marker->q_ptr->hovered(true);
177 }
178
179 void LegendMarkerItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
180 {
181 Q_UNUSED(event)
182 m_hovering = false;
183 emit m_marker->q_ptr->hovered(false);
184 }
185
186
163 #include "moc_legendmarkeritem_p.cpp"
187 #include "moc_legendmarkeritem_p.cpp"
164
188
165 QTCOMMERCIALCHART_END_NAMESPACE
189 QTCOMMERCIALCHART_END_NAMESPACE
@@ -48,6 +48,7 class LegendMarkerItem : public QGraphicsObject, public QGraphicsLayoutItem
48 Q_INTERFACES(QGraphicsLayoutItem)
48 Q_INTERFACES(QGraphicsLayoutItem)
49 public:
49 public:
50 explicit LegendMarkerItem(QLegendMarkerPrivate *marker, QGraphicsObject *parent = 0);
50 explicit LegendMarkerItem(QLegendMarkerPrivate *marker, QGraphicsObject *parent = 0);
51 ~LegendMarkerItem();
51
52
52 void setPen(const QPen &pen);
53 void setPen(const QPen &pen);
53 QPen pen() const;
54 QPen pen() const;
@@ -70,6 +71,9 public:
70 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
71 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
71 QSizeF sizeHint (Qt::SizeHint which, const QSizeF &constraint) const;
72 QSizeF sizeHint (Qt::SizeHint which, const QSizeF &constraint) const;
72
73
74 void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
75 void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
76
73 protected:
77 protected:
74 QLegendMarkerPrivate *m_marker; // Knows
78 QLegendMarkerPrivate *m_marker; // Knows
75 QRectF m_markerRect;
79 QRectF m_markerRect;
@@ -84,7 +88,7 protected:
84 QFont m_font;
88 QFont m_font;
85 QPen m_pen;
89 QPen m_pen;
86 QBrush m_brush;
90 QBrush m_brush;
87 bool m_visible;
91 bool m_hovering;
88
92
89 QPointF m_pressPos;
93 QPointF m_pressPos;
90
94
@@ -58,6 +58,7 private slots:
58 void areaMarkerProperties();
58 void areaMarkerProperties();
59 void xyMarkerPropertiesLine();
59 void xyMarkerPropertiesLine();
60 void xyMarkerPropertiesScatter();
60 void xyMarkerPropertiesScatter();
61 void markerSignals();
61
62
62 private:
63 private:
63
64
@@ -479,6 +480,71 void tst_QLegend::xyMarkerPropertiesScatter()
479 TRY_COMPARE(pm->isVisible(), true);
480 TRY_COMPARE(pm->isVisible(), true);
480 }
481 }
481
482
483 void tst_QLegend::markerSignals()
484 {
485 SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
486 QChart *chart = new QChart();
487 QLegend *legend = chart->legend();
488
489 QBarSeries *bar = new QBarSeries();
490 QBarSet *set1 = new QBarSet(QString("set 1"));
491 *set1 << 10 << 10 << 10;
492 bar->append(set1);
493 QBarSet *set2 = new QBarSet(QString("set 2"));
494 *set2 << 10 << 10 << 10;
495 bar->append(set2);
496 chart->addSeries(bar);
497
498 QPieSeries *pie = new QPieSeries();
499 pie->append(QString("slice1"), 1);
500 pie->append(QString("slice2"), 2);
501 pie->append(QString("slice3"), 3);
502 chart->addSeries(pie);
503 legend->setAlignment(Qt::AlignRight);
504
505 QLineSeries *line = new QLineSeries();
506 line->setName(QString("Line 1"));
507 line->append(1,1);
508 chart->addSeries(line);
509
510 QAreaSeries *area = new QAreaSeries();
511 area->setName(QString("Area 1"));
512 QLineSeries *upper = new QLineSeries();
513 QLineSeries *lower = new QLineSeries();
514 upper->append(2,2);
515 lower->append(1,1);
516 area->setUpperSeries(upper);
517 area->setLowerSeries(lower);
518 chart->addSeries(area);
519
520 QScatterSeries *scatter = new QScatterSeries();
521 scatter->setName(QString("Scatter"));
522 scatter->append(3,3);
523 chart->addSeries(scatter);
524
525 QList<QSignalSpy *> spies;
526 foreach(QLegendMarker *m, legend->markers()) {
527 QSignalSpy *spy = new QSignalSpy(m, SIGNAL(hovered(bool)));
528 spies.append(spy);
529 }
530
531 QChartView view(chart);
532 view.resize(400,300);
533 view.show();
534 QTest::qWaitForWindowShown(&view);
535
536 // Sweep mouse over all legend items
537 for ( int i = 0; i < 300; i++ ) {
538 QTest::mouseMove(view.viewport(), QPoint(333,i));
539 }
540
541 foreach(QSignalSpy *spy, spies) {
542 TRY_COMPARE(spy->count(), 2);
543 }
544
545 qDeleteAll(spies);
546 }
547
482 QTEST_MAIN(tst_QLegend)
548 QTEST_MAIN(tst_QLegend)
483
549
484 #include "tst_qlegend.moc"
550 #include "tst_qlegend.moc"
General Comments 0
You need to be logged in to leave comments. Login now