@@ -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() + |
|
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() + |
|
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( |
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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