From 9d5a354692be77abb46b19a9dc5575a2f939e010 Mon Sep 17 00:00:00 2001 From: Marek Rosa Date: Mon, 10 Dec 2012 11:16:03 +0200 Subject: Docs update --- demos/callout/callout.cpp | 102 ++++++++++++++++++++++++++++++++ demos/callout/callout.h | 32 ++++++++++ demos/callout/callout.pro | 15 +++++ demos/callout/main.cpp | 11 ++++ demos/callout/view.cpp | 125 ++++++++++++++++++++++++++++++++++++++++ demos/callout/view.h | 59 +++++++++++++++++++ demos/demos.pro | 3 +- doc/images/demos_callout.png | Bin 0 -> 57856 bytes doc/images/examples_callout.png | Bin 57856 -> 0 bytes doc/src/demos-audio.qdoc | 8 +++ doc/src/demos-callout.qdoc | 12 ++++ doc/src/demos.qdoc | 8 +++ examples/callout/callout.cpp | 102 -------------------------------- examples/callout/callout.h | 32 ---------- examples/callout/callout.pro | 15 ----- examples/callout/main.cpp | 11 ---- examples/callout/view.cpp | 123 --------------------------------------- examples/callout/view.h | 59 ------------------- examples/examples.pro | 1 - 19 files changed, 374 insertions(+), 344 deletions(-) create mode 100644 demos/callout/callout.cpp create mode 100644 demos/callout/callout.h create mode 100644 demos/callout/callout.pro create mode 100644 demos/callout/main.cpp create mode 100644 demos/callout/view.cpp create mode 100644 demos/callout/view.h create mode 100644 doc/images/demos_callout.png delete mode 100644 doc/images/examples_callout.png create mode 100644 doc/src/demos-audio.qdoc create mode 100644 doc/src/demos-callout.qdoc delete mode 100644 examples/callout/callout.cpp delete mode 100644 examples/callout/callout.h delete mode 100644 examples/callout/callout.pro delete mode 100644 examples/callout/main.cpp delete mode 100644 examples/callout/view.cpp delete mode 100644 examples/callout/view.h diff --git a/demos/callout/callout.cpp b/demos/callout/callout.cpp new file mode 100644 index 00000000..9f1de8cc --- /dev/null +++ b/demos/callout/callout.cpp @@ -0,0 +1,102 @@ +#include "callout.h" +#include +#include +#include +#include + +Callout::Callout(QGraphicsItem * parent): + QGraphicsItem(parent) +{ +} + +QRectF Callout::boundingRect() const +{ + QPointF anchor = mapFromParent(m_anchor); + QRectF rect; + rect.setLeft(qMin(m_textRect.left(), anchor.x())); + rect.setRight(qMax(m_textRect.right() + 8, anchor.x())); + rect.setTop(qMin(m_textRect.top(), anchor.y())); + rect.setBottom(qMax(m_textRect.bottom() + 8, anchor.y())); + return rect; +} + +void Callout::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(option) + Q_UNUSED(widget) + QPainterPath path; + path.addRoundedRect(m_textRect, 5, 5); + + QPointF anchor = mapFromParent(m_anchor); + if (!m_textRect.contains(anchor)) { + QPointF point1, point2; + + // establish the position of the anchor point in relation to m_textRect + bool above = anchor.y() <= m_textRect.top(); + bool aboveCenter = anchor.y() > m_textRect.top() && anchor.y() <= m_textRect.center().y(); + bool belowCenter = anchor.y() > m_textRect.center().y() && anchor.y() <= m_textRect.bottom(); + bool below = anchor.y() > m_textRect.bottom(); + + bool onLeft = anchor.x() <= m_textRect.left(); + bool leftOfCenter = anchor.x() > m_textRect.left() && anchor.x() <= m_textRect.center().x(); + bool rightOfCenter = anchor.x() > m_textRect.center().x() && anchor.x() <= m_textRect.right(); + bool onRight = anchor.x() > m_textRect.right(); + + // get the nearest m_textRect corner. + qreal x = (onRight + rightOfCenter) * m_textRect.width(); + qreal y = (below + belowCenter) * m_textRect.height(); + bool cornerCase = (above && onLeft) || (above && onRight) || (below && onLeft) || (below && onRight); + bool vertical = qAbs(anchor.x() - x) > qAbs(anchor.y() - y); + + qreal x1 = x + leftOfCenter * 10 - rightOfCenter * 20 + cornerCase * !vertical * (onLeft * 10 - onRight * 20); + qreal y1 = y + aboveCenter * 10 - belowCenter * 20 + cornerCase * vertical * (above * 10 - below * 20);; + point1.setX(x1); + point1.setY(y1); + + qreal x2 = x + leftOfCenter * 20 - rightOfCenter * 10 + cornerCase * !vertical * (onLeft * 20 - onRight * 10);; + qreal y2 = y + aboveCenter * 20 - belowCenter * 10 + cornerCase * vertical * (above * 20 - below * 10);; + point2.setX(x2); + point2.setY(y2); + + path.moveTo(point1); + path.lineTo(mapFromParent(m_anchor)); + path.lineTo(point2); + path = path.simplified(); + } + painter->setBrush(QColor(255, 255, 255)); + painter->drawPath(path); + painter->drawText(m_textRect.adjusted(4, 4, 0, 0), m_text); +} + +void Callout::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + if (m_textRect.contains(event->pos())) { + m_clickOffset = event->pos(); + event->setAccepted(true); + } else { + event->setAccepted(false); + } +} + +void Callout::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if (m_textRect.contains(event->pos())){ + setPos(mapToParent(event->pos() - m_clickOffset)); + event->setAccepted(true); + } else { + event->setAccepted(false); + } +} + +void Callout::setText(const QString &text) +{ + m_text = text; + QFontMetrics metrics(m_font); + prepareGeometryChange(); + m_textRect = metrics.boundingRect(QRect(0, 0, 150, 150), Qt::AlignLeft, m_text).adjusted(0, 0, 4, 4); +} + +void Callout::setAnchor(QPointF point) +{ + m_anchor = point; +} diff --git a/demos/callout/callout.h b/demos/callout/callout.h new file mode 100644 index 00000000..90499f52 --- /dev/null +++ b/demos/callout/callout.h @@ -0,0 +1,32 @@ +#ifndef CALLOUT_H +#define CALLOUT_H + +#include +#include + +class QGraphicsSceneMouseEvent; + +class Callout : public QGraphicsItem +{ +public: + Callout(QGraphicsItem * parent = 0); + + void setText(const QString &text); + void setAnchor(QPointF point); + + QRectF boundingRect() const; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget); + +protected: + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + +private: + QString m_text; + QRectF m_textRect; + QPointF m_anchor; + QFont m_font; + QPointF m_clickOffset; +}; + +#endif // CALLOUT_H diff --git a/demos/callout/callout.pro b/demos/callout/callout.pro new file mode 100644 index 00000000..ebe7b466 --- /dev/null +++ b/demos/callout/callout.pro @@ -0,0 +1,15 @@ +!include( ../demos.pri ) { + error( "Couldn't find the examples.pri file!" ) +} + +TARGET = callout +TEMPLATE = app + +SOURCES += \ + main.cpp\ + callout.cpp \ + view.cpp + +HEADERS += \ + callout.h \ + view.h diff --git a/demos/callout/main.cpp b/demos/callout/main.cpp new file mode 100644 index 00000000..18858fd3 --- /dev/null +++ b/demos/callout/main.cpp @@ -0,0 +1,11 @@ +#include +#include "view.h" + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + View w; + w.show(); + + return a.exec(); +} diff --git a/demos/callout/view.cpp b/demos/callout/view.cpp new file mode 100644 index 00000000..5dc3f989 --- /dev/null +++ b/demos/callout/view.cpp @@ -0,0 +1,125 @@ +/**************************************************************************** + ** + ** Copyright (C) 2012 Digia Plc + ** All rights reserved. + ** For any questions to Digia, please use contact form at http://qt.digia.com + ** + ** This file is part of the Qt Commercial Charts Add-on. + ** + ** $QT_BEGIN_LICENSE$ + ** Licensees holding valid Qt Commercial licenses may use this file in + ** accordance with the Qt Commercial License Agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and Digia. + ** + ** If you have questions regarding the use of this file, please use + ** contact form at http://qt.digia.com + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + +#include "view.h" +#include +#include +#include +#include +#include +#include +#include "callout.h" +#include + +View::View(QWidget *parent) + : QGraphicsView(new QGraphicsScene, parent), + m_coordX(0), + m_coordY(0), + m_chart(0), + m_tooltip(0) +{ + setDragMode(QGraphicsView::NoDrag); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + // chart + m_chart = new QChart; + m_chart->setMinimumSize(640, 480); + m_chart->setTitle("Hover the line to show callout. Click the line to make it stay"); + m_chart->legend()->hide(); + QLineSeries *series = new QLineSeries; + series->append(1, 3); + series->append(4, 5); + series->append(5, 4.5); + series->append(7, 1); + series->append(11, 2); + m_chart->addSeries(series); + + QSplineSeries *series2 = new QSplineSeries; + series2->append(1.6, 1.4); + series2->append(2.4, 3.5); + series2->append(3.7, 2.5); + series2->append(7, 4); + series2->append(10, 2); + m_chart->addSeries(series2); + + m_chart->createDefaultAxes(); + m_chart->setAcceptHoverEvents(true); + + setRenderHint(QPainter::Antialiasing); + scene()->addItem(m_chart); + + m_coordX = new QGraphicsSimpleTextItem(m_chart); + m_coordX->setPos(m_chart->size().width()/2 - 50, m_chart->size().height()); + m_coordX->setText("X: "); + m_coordY = new QGraphicsSimpleTextItem(m_chart); + m_coordY->setPos(m_chart->size().width()/2 + 50, m_chart->size().height()); + m_coordY->setText("Y: "); + + connect(series, SIGNAL(clicked(QPointF)), this, SLOT(keepCallout())); + connect(series, SIGNAL(hovered(QPointF, bool)), this, SLOT(tooltip(QPointF,bool))); + + connect(series2, SIGNAL(clicked(QPointF)), this, SLOT(keepCallout())); + connect(series2, SIGNAL(hovered(QPointF, bool)), this, SLOT(tooltip(QPointF,bool))); + + this->setMouseTracking(true); +} + +void View::resizeEvent(QResizeEvent *event) +{ + if (scene()) { + scene()->setSceneRect(QRect(QPoint(0, 0), event->size())); + m_chart->resize(event->size()); + m_coordX->setPos(m_chart->size().width()/2 - 50, m_chart->size().height() - 20); + m_coordY->setPos(m_chart->size().width()/2 + 50, m_chart->size().height() - 20); +// for (int i = 0; i < children().count(); i++) +// if () + } + QGraphicsView::resizeEvent(event); +} + +void View::mouseMoveEvent(QMouseEvent *event) +{ + m_coordX->setText(QString("X: %1").arg(m_chart->mapToValue(event->pos()).x())); + m_coordY->setText(QString("Y: %1").arg(m_chart->mapToValue(event->pos()).y())); + QGraphicsView::mouseMoveEvent(event); +} + +void View::keepCallout() +{ + m_tooltip = new Callout(m_chart); +} + +void View::tooltip(QPointF point, bool state) +{ + if (m_tooltip == 0) + m_tooltip = new Callout(m_chart); + + if (state) { + m_tooltip->setText(QString("X: %1 \nY: %2 ").arg(point.x()).arg(point.y())); + QXYSeries *series = qobject_cast(sender()); + m_tooltip->setAnchor(m_chart->mapToPosition(point, series)); + m_tooltip->setPos(m_chart->mapToPosition(point, series) + QPoint(10, -50)); + m_tooltip->setZValue(11); + m_tooltip->show(); + } else { + m_tooltip->hide(); + } +} diff --git a/demos/callout/view.h b/demos/callout/view.h new file mode 100644 index 00000000..06fe3c1a --- /dev/null +++ b/demos/callout/view.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef VIEW_H +#define VIEW_H +#include +#include + +QTCOMMERCIALCHART_BEGIN_NAMESPACE +class QChart; +QTCOMMERCIALCHART_END_NAMESPACE + +class QGraphicsScene; +class QResizeEvent; +class Callout; +class QMouseEvent; + +QTCOMMERCIALCHART_USE_NAMESPACE + +class View: public QGraphicsView +{ + Q_OBJECT + +public: + View(QWidget *parent = 0); + +protected: + void resizeEvent(QResizeEvent *event); + void mouseMoveEvent(QMouseEvent *event); + +public slots: + void keepCallout(); + void tooltip(QPointF point, bool state); + +private: + QGraphicsSimpleTextItem *m_coordX; + QGraphicsSimpleTextItem *m_coordY; + QChart *m_chart; + Callout *m_tooltip; +}; + +#endif diff --git a/demos/demos.pro b/demos/demos.pro index 1af6225d..eb09747f 100644 --- a/demos/demos.pro +++ b/demos/demos.pro @@ -14,7 +14,8 @@ SUBDIRS += piechartcustomization \ qmlcustommodel \ chartinteractions \ qmlaxes \ - qmlcustomlegend + qmlcustomlegend \ + callout contains(QT_CONFIG, opengl) { SUBDIRS += chartthemes \ diff --git a/doc/images/demos_callout.png b/doc/images/demos_callout.png new file mode 100644 index 00000000..7c0519ca Binary files /dev/null and b/doc/images/demos_callout.png differ diff --git a/doc/images/examples_callout.png b/doc/images/examples_callout.png deleted file mode 100644 index 7c0519ca..00000000 Binary files a/doc/images/examples_callout.png and /dev/null differ diff --git a/doc/src/demos-audio.qdoc b/doc/src/demos-audio.qdoc new file mode 100644 index 00000000..feda61e1 --- /dev/null +++ b/doc/src/demos-audio.qdoc @@ -0,0 +1,8 @@ +/*! + \example demos/audio + \title Audio demo + \subtitle + + This demos shows drawing of the dynamic data (microphon input) + \image demos_audio.png +*/ diff --git a/doc/src/demos-callout.qdoc b/doc/src/demos-callout.qdoc new file mode 100644 index 00000000..5f6bb420 --- /dev/null +++ b/doc/src/demos-callout.qdoc @@ -0,0 +1,12 @@ +/*! + \example demos/callout + \title Callout demo + \subtitle + + This demo shows how to draw an additional element (a callout) on top of the chart. + \image demos_callout.png + + QChart class provides two methods that map between the scene coordinates and the series' domain (defines by the axes ranges). + QPointF QChart::mapToPosition(const QPointF &value, QAbstractSeries *series) + QPointF QChart::mapToValue(const QPointF &position, QAbstractSeries *series) +*/ diff --git a/doc/src/demos.qdoc b/doc/src/demos.qdoc index e448c64d..7c7a5681 100644 --- a/doc/src/demos.qdoc +++ b/doc/src/demos.qdoc @@ -59,6 +59,14 @@ Qml Weather Qml Custom Legend + + Callout + Audio + + + Callout + Audio + diff --git a/examples/callout/callout.cpp b/examples/callout/callout.cpp deleted file mode 100644 index 9f1de8cc..00000000 --- a/examples/callout/callout.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "callout.h" -#include -#include -#include -#include - -Callout::Callout(QGraphicsItem * parent): - QGraphicsItem(parent) -{ -} - -QRectF Callout::boundingRect() const -{ - QPointF anchor = mapFromParent(m_anchor); - QRectF rect; - rect.setLeft(qMin(m_textRect.left(), anchor.x())); - rect.setRight(qMax(m_textRect.right() + 8, anchor.x())); - rect.setTop(qMin(m_textRect.top(), anchor.y())); - rect.setBottom(qMax(m_textRect.bottom() + 8, anchor.y())); - return rect; -} - -void Callout::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - Q_UNUSED(option) - Q_UNUSED(widget) - QPainterPath path; - path.addRoundedRect(m_textRect, 5, 5); - - QPointF anchor = mapFromParent(m_anchor); - if (!m_textRect.contains(anchor)) { - QPointF point1, point2; - - // establish the position of the anchor point in relation to m_textRect - bool above = anchor.y() <= m_textRect.top(); - bool aboveCenter = anchor.y() > m_textRect.top() && anchor.y() <= m_textRect.center().y(); - bool belowCenter = anchor.y() > m_textRect.center().y() && anchor.y() <= m_textRect.bottom(); - bool below = anchor.y() > m_textRect.bottom(); - - bool onLeft = anchor.x() <= m_textRect.left(); - bool leftOfCenter = anchor.x() > m_textRect.left() && anchor.x() <= m_textRect.center().x(); - bool rightOfCenter = anchor.x() > m_textRect.center().x() && anchor.x() <= m_textRect.right(); - bool onRight = anchor.x() > m_textRect.right(); - - // get the nearest m_textRect corner. - qreal x = (onRight + rightOfCenter) * m_textRect.width(); - qreal y = (below + belowCenter) * m_textRect.height(); - bool cornerCase = (above && onLeft) || (above && onRight) || (below && onLeft) || (below && onRight); - bool vertical = qAbs(anchor.x() - x) > qAbs(anchor.y() - y); - - qreal x1 = x + leftOfCenter * 10 - rightOfCenter * 20 + cornerCase * !vertical * (onLeft * 10 - onRight * 20); - qreal y1 = y + aboveCenter * 10 - belowCenter * 20 + cornerCase * vertical * (above * 10 - below * 20);; - point1.setX(x1); - point1.setY(y1); - - qreal x2 = x + leftOfCenter * 20 - rightOfCenter * 10 + cornerCase * !vertical * (onLeft * 20 - onRight * 10);; - qreal y2 = y + aboveCenter * 20 - belowCenter * 10 + cornerCase * vertical * (above * 20 - below * 10);; - point2.setX(x2); - point2.setY(y2); - - path.moveTo(point1); - path.lineTo(mapFromParent(m_anchor)); - path.lineTo(point2); - path = path.simplified(); - } - painter->setBrush(QColor(255, 255, 255)); - painter->drawPath(path); - painter->drawText(m_textRect.adjusted(4, 4, 0, 0), m_text); -} - -void Callout::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - if (m_textRect.contains(event->pos())) { - m_clickOffset = event->pos(); - event->setAccepted(true); - } else { - event->setAccepted(false); - } -} - -void Callout::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - if (m_textRect.contains(event->pos())){ - setPos(mapToParent(event->pos() - m_clickOffset)); - event->setAccepted(true); - } else { - event->setAccepted(false); - } -} - -void Callout::setText(const QString &text) -{ - m_text = text; - QFontMetrics metrics(m_font); - prepareGeometryChange(); - m_textRect = metrics.boundingRect(QRect(0, 0, 150, 150), Qt::AlignLeft, m_text).adjusted(0, 0, 4, 4); -} - -void Callout::setAnchor(QPointF point) -{ - m_anchor = point; -} diff --git a/examples/callout/callout.h b/examples/callout/callout.h deleted file mode 100644 index 90499f52..00000000 --- a/examples/callout/callout.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef CALLOUT_H -#define CALLOUT_H - -#include -#include - -class QGraphicsSceneMouseEvent; - -class Callout : public QGraphicsItem -{ -public: - Callout(QGraphicsItem * parent = 0); - - void setText(const QString &text); - void setAnchor(QPointF point); - - QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget); - -protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - -private: - QString m_text; - QRectF m_textRect; - QPointF m_anchor; - QFont m_font; - QPointF m_clickOffset; -}; - -#endif // CALLOUT_H diff --git a/examples/callout/callout.pro b/examples/callout/callout.pro deleted file mode 100644 index b0da66d6..00000000 --- a/examples/callout/callout.pro +++ /dev/null @@ -1,15 +0,0 @@ -!include( ../examples.pri ) { - error( "Couldn't find the examples.pri file!" ) -} - -TARGET = callout -TEMPLATE = app - -SOURCES += \ - main.cpp\ - callout.cpp \ - view.cpp - -HEADERS += \ - callout.h \ - view.h diff --git a/examples/callout/main.cpp b/examples/callout/main.cpp deleted file mode 100644 index 18858fd3..00000000 --- a/examples/callout/main.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include "view.h" - -int main(int argc, char *argv[]) -{ - QApplication a(argc, argv); - View w; - w.show(); - - return a.exec(); -} diff --git a/examples/callout/view.cpp b/examples/callout/view.cpp deleted file mode 100644 index 9e2c3284..00000000 --- a/examples/callout/view.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************** - ** - ** Copyright (C) 2012 Digia Plc - ** All rights reserved. - ** For any questions to Digia, please use contact form at http://qt.digia.com - ** - ** This file is part of the Qt Commercial Charts Add-on. - ** - ** $QT_BEGIN_LICENSE$ - ** Licensees holding valid Qt Commercial licenses may use this file in - ** accordance with the Qt Commercial License Agreement provided with the - ** Software or, alternatively, in accordance with the terms contained in - ** a written agreement between you and Digia. - ** - ** If you have questions regarding the use of this file, please use - ** contact form at http://qt.digia.com - ** $QT_END_LICENSE$ - ** - ****************************************************************************/ - -#include "view.h" -#include -#include -#include -#include -#include -#include -#include "callout.h" -#include - -View::View(QWidget *parent) - : QGraphicsView(new QGraphicsScene, parent), - m_coordX(0), - m_coordY(0), - m_chart(0), - m_tooltip(0) -{ - setDragMode(QGraphicsView::NoDrag); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - - // chart - m_chart = new QChart; - m_chart->setMinimumSize(640, 480); - m_chart->setTitle("Hover the line to show callout. Click the line to make it stay"); - m_chart->legend()->hide(); - QLineSeries *series = new QLineSeries; - series->append(1, 3); - series->append(4, 5); - series->append(5, 4.5); - series->append(7, 1); - series->append(11, 2); - m_chart->addSeries(series); - - QSplineSeries *series2 = new QSplineSeries; - series2->append(1.6, 1.4); - series2->append(2.4, 3.5); - series2->append(3.7, 2.5); - series2->append(7, 4); - series2->append(10, 2); - m_chart->addSeries(series2); - - m_chart->createDefaultAxes(); - m_chart->setAcceptHoverEvents(true); - - setRenderHint(QPainter::Antialiasing); - scene()->addItem(m_chart); - - m_coordX = new QGraphicsSimpleTextItem(m_chart); - m_coordX->setPos(m_chart->size().width()/2 - 50, m_chart->size().height()); - m_coordX->setText("X: "); - m_coordY = new QGraphicsSimpleTextItem(m_chart); - m_coordY->setPos(m_chart->size().width()/2 + 50, m_chart->size().height()); - m_coordY->setText("Y: "); - - connect(series, SIGNAL(clicked(QPointF)), this, SLOT(keepCallout())); - connect(series, SIGNAL(hovered(QPointF, bool)), this, SLOT(tooltip(QPointF,bool))); - - connect(series2, SIGNAL(clicked(QPointF)), this, SLOT(keepCallout())); - connect(series2, SIGNAL(hovered(QPointF, bool)), this, SLOT(tooltip(QPointF,bool))); - - this->setMouseTracking(true); -} - -void View::resizeEvent(QResizeEvent *event) -{ - if (scene()) { - scene()->setSceneRect(QRect(QPoint(0, 0), event->size())); - m_chart->resize(event->size()); - m_coordX->setPos(m_chart->size().width()/2 - 50, m_chart->size().height() - 20); - m_coordY->setPos(m_chart->size().width()/2 + 50, m_chart->size().height() - 20); - } - QGraphicsView::resizeEvent(event); -} - -void View::mouseMoveEvent(QMouseEvent *event) -{ - m_coordX->setText(QString("X: %1").arg(m_chart->mapToValue(event->pos()).x())); - m_coordY->setText(QString("Y: %1").arg(m_chart->mapToValue(event->pos()).y())); - QGraphicsView::mouseMoveEvent(event); -} - -void View::keepCallout() -{ - m_tooltip = new Callout(m_chart); -} - -void View::tooltip(QPointF point, bool state) -{ - if (m_tooltip == 0) - m_tooltip = new Callout(m_chart); - - if (state) { - m_tooltip->setText(QString("X: %1 \nY: %2 ").arg(point.x()).arg(point.y())); - QXYSeries *series = qobject_cast(sender()); - m_tooltip->setAnchor(m_chart->mapToPosition(point, series)); - m_tooltip->setPos(m_chart->mapToPosition(point, series) + QPoint(10, -50)); - m_tooltip->setZValue(11); - m_tooltip->show(); - } else { - m_tooltip->hide(); - } -} diff --git a/examples/callout/view.h b/examples/callout/view.h deleted file mode 100644 index 06fe3c1a..00000000 --- a/examples/callout/view.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc -** All rights reserved. -** For any questions to Digia, please use contact form at http://qt.digia.com -** -** This file is part of the Qt Commercial Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. -** -** If you have questions regarding the use of this file, please use -** contact form at http://qt.digia.com -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef VIEW_H -#define VIEW_H -#include -#include - -QTCOMMERCIALCHART_BEGIN_NAMESPACE -class QChart; -QTCOMMERCIALCHART_END_NAMESPACE - -class QGraphicsScene; -class QResizeEvent; -class Callout; -class QMouseEvent; - -QTCOMMERCIALCHART_USE_NAMESPACE - -class View: public QGraphicsView -{ - Q_OBJECT - -public: - View(QWidget *parent = 0); - -protected: - void resizeEvent(QResizeEvent *event); - void mouseMoveEvent(QMouseEvent *event); - -public slots: - void keepCallout(); - void tooltip(QPointF point, bool state); - -private: - QGraphicsSimpleTextItem *m_coordX; - QGraphicsSimpleTextItem *m_coordY; - QChart *m_chart; - Callout *m_tooltip; -}; - -#endif diff --git a/examples/examples.pro b/examples/examples.pro index 969f351a..ecc1b5fb 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -31,7 +31,6 @@ SUBDIRS += \ temperaturerecords \ donutchart \ multiaxis \ - callout \ legendmarkers !linux-arm*: { -- cgit v1.2.3