##// END OF EJS Templates
Mapping functions added to QChart. Callout example updated
Marek Rosa -
r2344:bf21d64b0d3d
parent child
Show More
@@ -14,9 +14,9 QRectF Callout::boundingRect() const
14 QPointF anchor = mapFromParent(m_anchor);
14 QPointF anchor = mapFromParent(m_anchor);
15 QRectF rect;
15 QRectF rect;
16 rect.setLeft(qMin(m_textRect.left(), anchor.x()));
16 rect.setLeft(qMin(m_textRect.left(), anchor.x()));
17 rect.setRight(qMax(m_textRect.right() + 4, anchor.x()));
17 rect.setRight(qMax(m_textRect.right() + 8, anchor.x()));
18 rect.setTop(qMin(m_textRect.top(), anchor.y()));
18 rect.setTop(qMin(m_textRect.top(), anchor.y()));
19 rect.setBottom(qMax(m_textRect.bottom() + 4, anchor.y()));
19 rect.setBottom(qMax(m_textRect.bottom() + 8, anchor.y()));
20 return rect;
20 return rect;
21 }
21 }
22
22
@@ -65,7 +65,7 void Callout::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q
65 }
65 }
66 painter->setBrush(QColor(255, 255, 255));
66 painter->setBrush(QColor(255, 255, 255));
67 painter->drawPath(path);
67 painter->drawPath(path);
68 painter->drawText(m_textRect.adjusted(2, 2, 0, 0), m_text);
68 painter->drawText(m_textRect.adjusted(4, 4, 0, 0), m_text);
69 }
69 }
70
70
71 void Callout::mousePressEvent(QGraphicsSceneMouseEvent *event)
71 void Callout::mousePressEvent(QGraphicsSceneMouseEvent *event)
@@ -73,9 +73,10 void Widget::tooltip(QPointF point, bool state)
73 m_tooltip = new Callout(m_chart);
73 m_tooltip = new Callout(m_chart);
74
74
75 if (state) {
75 if (state) {
76 m_tooltip->setText(QString("X: %1\nY: %2").arg(point.x()).arg(point.y()));
76 m_tooltip->setText(QString("X: %1 \nY: %2 ").arg(point.x()).arg(point.y()));
77 m_tooltip->setAnchor(m_chart->mapFromParent(m_view->mapToScene(m_view->mapFromGlobal(QCursor::pos()))));
77 QXYSeries *series = qobject_cast<QXYSeries *>(sender());
78 m_tooltip->setPos(m_chart->mapFromParent(m_view->mapToScene(m_view->mapFromGlobal(QCursor::pos() + QPoint(10, -50)))));
78 m_tooltip->setAnchor(m_chart->mapToPosition(point, series));
79 m_tooltip->setPos(m_chart->mapToPosition(point, series) + QPoint(10, -50));
79 m_tooltip->setZValue(11);
80 m_tooltip->setZValue(11);
80 m_tooltip->show();
81 m_tooltip->show();
81 } else {
82 } else {
@@ -385,6 +385,28 void ChartDataSet::scrollDomain(qreal dx, qreal dy)
385 domain->blockRangeSignals(false);
385 domain->blockRangeSignals(false);
386 }
386 }
387
387
388 QPointF ChartDataSet::mapToValue(const QPointF &position, QAbstractSeries *series)
389 {
390 QPointF point;
391 if (series == 0 && !m_seriesList.isEmpty())
392 series = m_seriesList.first();
393
394 if (series && m_seriesList.contains(series))
395 point = series->d_ptr->m_domain->calculateDomainPoint(position);
396 return point;
397 }
398
399 QPointF ChartDataSet::mapToPosition(const QPointF &value, QAbstractSeries *series)
400 {
401 QPointF point = m_chart->plotArea().topLeft();
402 if (series == 0 && !m_seriesList.isEmpty())
403 series = m_seriesList.first();
404
405 if (series && m_seriesList.contains(series))
406 point += series->d_ptr->m_domain->calculateGeometryPoint(value);
407 return point;
408 }
409
388 QList<QAbstractAxis*> ChartDataSet::axes() const
410 QList<QAbstractAxis*> ChartDataSet::axes() const
389 {
411 {
390 return m_axisList;
412 return m_axisList;
@@ -64,6 +64,9 public:
64 void zoomOutDomain(const QRectF &rect);
64 void zoomOutDomain(const QRectF &rect);
65 void scrollDomain(qreal dx, qreal dy);
65 void scrollDomain(qreal dx, qreal dy);
66
66
67 QPointF mapToValue(const QPointF &position, QAbstractSeries *series = 0);
68 QPointF mapToPosition(const QPointF &value, QAbstractSeries *series = 0);
69
67 Q_SIGNALS:
70 Q_SIGNALS:
68 void axisAdded(QAbstractAxis* axis);
71 void axisAdded(QAbstractAxis* axis);
69 void axisRemoved(QAbstractAxis* axis);
72 void axisRemoved(QAbstractAxis* axis);
@@ -269,7 +269,7 void QChart::zoomIn()
269 */
269 */
270 void QChart::zoomIn(const QRectF &rect)
270 void QChart::zoomIn(const QRectF &rect)
271 {
271 {
272 d_ptr->zoomIn(rect);
272 d_ptr->zoomIn(rect);
273 }
273 }
274
274
275 /*!
275 /*!
@@ -347,11 +347,11 QAbstractAxis *QChart::axisY(QAbstractSeries *series) const
347 foreach(QAbstractAxis* axis, axes){
347 foreach(QAbstractAxis* axis, axes){
348
348
349 if(axis->alignment()==Qt::AlignLeft){
349 if(axis->alignment()==Qt::AlignLeft){
350 left=axis;
350 left=axis;
351 }
351 }
352
352
353 if(axis->alignment()==Qt::AlignRight){
353 if(axis->alignment()==Qt::AlignRight){
354 right=axis;
354 right=axis;
355 }
355 }
356 }
356 }
357
357
@@ -540,16 +540,16 QList<QAbstractSeries *> QChart::series() const
540 */
540 */
541 void QChart::setAxisX(QAbstractAxis *axis , QAbstractSeries *series)
541 void QChart::setAxisX(QAbstractAxis *axis , QAbstractSeries *series)
542 {
542 {
543 QList<QAbstractAxis*> list = axes(Qt::Horizontal,series);
543 QList<QAbstractAxis*> list = axes(Qt::Horizontal,series);
544
544
545 foreach(QAbstractAxis* a, list){
545 foreach(QAbstractAxis* a, list){
546 d_ptr->m_dataset->removeAxis(a);
546 d_ptr->m_dataset->removeAxis(a);
547 delete a;
547 delete a;
548 }
548 }
549
549
550 if(!d_ptr->m_dataset->axes().contains(axis))
550 if(!d_ptr->m_dataset->axes().contains(axis))
551 d_ptr->m_dataset->addAxis(axis,Qt::AlignBottom);
551 d_ptr->m_dataset->addAxis(axis,Qt::AlignBottom);
552 d_ptr->m_dataset->attachAxis(series,axis);
552 d_ptr->m_dataset->attachAxis(series,axis);
553 }
553 }
554
554
555 /*!
555 /*!
@@ -567,18 +567,28 void QChart::setAxisY(QAbstractAxis *axis , QAbstractSeries *series)
567 }
567 }
568
568
569 if(!d_ptr->m_dataset->axes().contains(axis))
569 if(!d_ptr->m_dataset->axes().contains(axis))
570 d_ptr->m_dataset->addAxis(axis,Qt::AlignLeft);
570 d_ptr->m_dataset->addAxis(axis,Qt::AlignLeft);
571 d_ptr->m_dataset->attachAxis(series,axis);
571 d_ptr->m_dataset->attachAxis(series,axis);
572 }
572 }
573
573
574 void QChart::addAxis(QAbstractAxis *axis,Qt::Alignment aligment)
574 void QChart::addAxis(QAbstractAxis *axis,Qt::Alignment aligment)
575 {
575 {
576 d_ptr->m_dataset->addAxis(axis,aligment);
576 d_ptr->m_dataset->addAxis(axis,aligment);
577 }
577 }
578
578
579 void QChart::removeAxis(QAbstractAxis *axis)
579 void QChart::removeAxis(QAbstractAxis *axis)
580 {
580 {
581 d_ptr->m_dataset->removeAxis(axis);
581 d_ptr->m_dataset->removeAxis(axis);
582 }
583
584 QPointF QChart::mapToValue(const QPointF &position, QAbstractSeries *series)
585 {
586 return d_ptr->m_dataset->mapToValue(position, series);
587 }
588
589 QPointF QChart::mapToPosition(const QPointF &value, QAbstractSeries *series)
590 {
591 return d_ptr->m_dataset->mapToPosition(value, series);
582 }
592 }
583
593
584 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
594 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -617,7 +627,7 void QChartPrivate::zoomIn(qreal factor)
617 void QChartPrivate::zoomIn(const QRectF &rect)
627 void QChartPrivate::zoomIn(const QRectF &rect)
618 {
628 {
619 if (!rect.isValid())
629 if (!rect.isValid())
620 return;
630 return;
621
631
622 QRectF r = rect.normalized();
632 QRectF r = rect.normalized();
623 const QRectF geometry = m_presenter->geometry();
633 const QRectF geometry = m_presenter->geometry();
@@ -130,6 +130,9 public:
130
130
131 QRectF plotArea() const;
131 QRectF plotArea() const;
132
132
133 QPointF mapToValue(const QPointF &position, QAbstractSeries *series = 0);
134 QPointF mapToPosition(const QPointF &value, QAbstractSeries *series = 0);
135
133 protected:
136 protected:
134 QScopedPointer<QChartPrivate> d_ptr;
137 QScopedPointer<QChartPrivate> d_ptr;
135 friend class QLegend;
138 friend class QLegend;
General Comments 0
You need to be logged in to leave comments. Login now