diff options
author | Marek Rosa <marek.rosa@digia.com> | 2012-12-04 14:58:52 +0200 |
---|---|---|
committer | Marek Rosa <marek.rosa@digia.com> | 2012-12-04 14:58:52 +0200 |
commit | 1937d28dc8703ef892a686c6f4bffdb09a122604 (patch) | |
tree | 04b72bebea73a3d1e8703203b339ed92eff1f3d6 /examples | |
parent | 25ac4815295cbb811ead2d426defce6299d7f854 (diff) |
Updated callout example
Diffstat (limited to 'examples')
-rw-r--r-- | examples/callout/callout.cpp | 2 | ||||
-rw-r--r-- | examples/callout/callout.pro | 12 | ||||
-rw-r--r-- | examples/callout/main.cpp | 4 | ||||
-rw-r--r-- | examples/callout/view.cpp | 119 | ||||
-rw-r--r-- | examples/callout/view.h | 59 | ||||
-rw-r--r-- | examples/callout/widget.cpp | 85 | ||||
-rw-r--r-- | examples/callout/widget.h | 32 |
7 files changed, 188 insertions, 125 deletions
diff --git a/examples/callout/callout.cpp b/examples/callout/callout.cpp index 5a26da34..9f1de8cc 100644 --- a/examples/callout/callout.cpp +++ b/examples/callout/callout.cpp @@ -2,7 +2,7 @@ #include <QPainter> #include <QFontMetrics> #include <QGraphicsSceneMouseEvent> -#include <QCursor> +#include <QMouseEvent> Callout::Callout(QGraphicsItem * parent): QGraphicsItem(parent) diff --git a/examples/callout/callout.pro b/examples/callout/callout.pro index 0df4a5b5..b0da66d6 100644 --- a/examples/callout/callout.pro +++ b/examples/callout/callout.pro @@ -5,9 +5,11 @@ TARGET = callout TEMPLATE = app -SOURCES += main.cpp\ - widget.cpp \ - callout.cpp +SOURCES += \ + main.cpp\ + callout.cpp \ + view.cpp -HEADERS += widget.h \ - callout.h +HEADERS += \ + callout.h \ + view.h diff --git a/examples/callout/main.cpp b/examples/callout/main.cpp index 7b1f424b..18858fd3 100644 --- a/examples/callout/main.cpp +++ b/examples/callout/main.cpp @@ -1,10 +1,10 @@ #include <QApplication> -#include "widget.h" +#include "view.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); - Widget w; + View w; w.show(); return a.exec(); diff --git a/examples/callout/view.cpp b/examples/callout/view.cpp new file mode 100644 index 00000000..be3ec13a --- /dev/null +++ b/examples/callout/view.cpp @@ -0,0 +1,119 @@ +/**************************************************************************** + ** + ** 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 <QResizeEvent> +#include <QGraphicsScene> +#include <QChart> +#include <QLineSeries> +#include <QSplineSeries> +#include <QGraphicsTextItem> +#include "callout.h" +#include <QMouseEvent> + +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(800, 600); + 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())); + 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<QXYSeries *>(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 new file mode 100644 index 00000000..06fe3c1a --- /dev/null +++ b/examples/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 <QGraphicsView> +#include <QChartGlobal> + +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/callout/widget.cpp b/examples/callout/widget.cpp deleted file mode 100644 index d0ac439f..00000000 --- a/examples/callout/widget.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "widget.h" -#include <QGraphicsScene> -#include <QGraphicsView> -#include <QVBoxLayout> -#include <QChart> -#include <QLineSeries> -#include <QSplineSeries> -#include <QGraphicsTextItem> -#include <QGraphicsLineItem> -#include "callout.h" - -QTCOMMERCIALCHART_USE_NAMESPACE - -Widget::Widget(QWidget *parent) - : QWidget(parent), - m_scene(0), - m_chart(0), - m_view(0), - m_tooltip(0) -{ - // 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_scene = new QGraphicsScene; - m_view = new QGraphicsView(m_scene); - m_view->setRenderHint(QPainter::Antialiasing); - m_scene->addItem(m_chart); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(m_view); - setLayout(mainLayout); - - 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))); -} - -Widget::~Widget() -{ - -} - -void Widget::keepCallout() -{ - m_tooltip = new Callout(m_chart); -} - -void Widget::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<QXYSeries *>(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/widget.h b/examples/callout/widget.h deleted file mode 100644 index 7c5041a8..00000000 --- a/examples/callout/widget.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef WIDGET_H -#define WIDGET_H - -#include <QWidget> -#include <QChart> - -class QGraphicsScene; -class QGraphicsView; -class Callout; - -QTCOMMERCIALCHART_USE_NAMESPACE - -class Widget : public QWidget -{ - Q_OBJECT - -public: - Widget(QWidget *parent = 0); - ~Widget(); - -public slots: - void keepCallout(); - void tooltip(QPointF point, bool state); - -private: - QGraphicsScene *m_scene; - QChart *m_chart; - QGraphicsView *m_view; - Callout *m_tooltip; -}; - -#endif // WIDGET_H |