From f4dbcb0551aba13e720207f93602cb1d05b1a311 2012-01-18 15:30:42 From: Michal Klocek Date: 2012-01-18 15:30:42 Subject: [PATCH] Refactor current draft to fit int current design specs * fixes compilation errors * adds QChartSeries * adds QXYChartSeries * adds QXYLineChartItem * fixes xylinechart example to use QChartWidget --- diff --git a/example/linechart/linechart.pro b/example/linechart/linechart.pro index 60a293b..08094fa 100644 --- a/example/linechart/linechart.pro +++ b/example/linechart/linechart.pro @@ -5,5 +5,4 @@ QT += core gui CONFIG += charts -HEADERS += chartview.h -SOURCES += main.cpp chartview.cpp +SOURCES += main.cpp diff --git a/example/linechart/main.cpp b/example/linechart/main.cpp index c71e70c..f90ed6d 100644 --- a/example/linechart/main.cpp +++ b/example/linechart/main.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include "chartview.h" #include @@ -15,13 +16,13 @@ int main(int argc, char *argv[]) QMainWindow window; - QXYSeries* series0 = new QXYSeries(); + QXYChartSeries* series0 = QXYChartSeries::create(); series0->setColor(Qt::blue); - QXYSeries* series1 = new QXYSeries(); + QXYChartSeries* series1 = QXYChartSeries::create(); series1->setColor(Qt::red); - QXYSeries* series2 = new QXYSeries(); + QXYChartSeries* series2 = QXYChartSeries::create(); series2->setColor(Qt::gray); - QXYSeries* series3 = new QXYSeries(); + QXYChartSeries* series3 = QXYChartSeries::create(); series3->setColor(Qt::green); int numPoints = 100; @@ -33,23 +34,21 @@ int main(int argc, char *argv[]) series3->add(x,100); } - QList dataset; + QList dataset; - qDebug()<<"Series 1:" << *series1; - qDebug()<<"Series 2:" << *series2; + //qDebug()<<"Series 1:" << *series1; + //qDebug()<<"Series 2:" << *series2; dataset << series0; dataset << series1; dataset << series2; dataset << series3; - QChart* chart = QChart::createXYLineChart(dataset); - chart->setMargin(50); - QChartWidget* chartWidget = new QChartWidget(); - chartWidget->addChart(chart); + QChartWidget* chartWidget = new QChartWidget(&window); + chartWidget->addSeries(series1); + chartWidget->addSeries(series2); - ChartView* view = new ChartView(chartWidget,&window); - window.setCentralWidget(view); + window.setCentralWidget(chartWidget); window.resize(400, 300); window.show(); diff --git a/src/qchart.cpp b/src/qchart.cpp index 0c10220..ab80291 100644 --- a/src/qchart.cpp +++ b/src/qchart.cpp @@ -1,24 +1,70 @@ #include "qchart.h" -#include "xylinechart_p.h" +#include "qchartseries.h" +#include "xylinechartitem_p.h" +#include "axis_p.h" +#include "xygrid_p.h" +#include QCHART_BEGIN_NAMESPACE QChart::QChart(QGraphicsItem* parent):QGraphicsItem(parent), -m_marginSize(0) +m_marginSize(0), +m_axisX(new Axis(this)), +m_axisY(new Axis(this)), +m_grid(new XYGrid(this)), +m_plotDataIndex(0) { // setFlags(QGraphicsItem::ItemClipsChildrenToShape); + // set axis + m_axisY->rotate(90); + + XYPlotData data; + data.m_minX = 0.0; + data.m_maxX = 100.0; + data.m_minY = 0.0; + data.m_maxY = 100.0; + data.m_ticksX=4; + data.m_ticksY=4; + + m_plotDataList.clear(); + m_plotDataList << data; + + m_grid->setZValue(10); + m_grid->setXYPlotData(m_plotDataList.at(0)); } QChart::~QChart(){} +QRectF QChart::boundingRect() const +{ + return m_rect; +} -QChart* QChart::createXYLineChart(const QList& dataset) +void QChart::addSeries(QChartSeries* series) { - XYLineChart* chart = new XYLineChart(); - foreach (const QXYSeries* series,dataset) { - chart->addXYSeries(series); + m_series<type()) + { + case QChartSeries::LINE: + qDebug()<<"xyline added"; + XYLineChartItem* item = new XYLineChartItem(reinterpret_cast(series),this); + item->setXYPlotData(m_plotDataList.at(0)); + m_items<setPos(m_rect.topLeft()); + m_grid->setSize(m_rect.size()); + foreach(QGraphicsItem* item , m_items) + reinterpret_cast(item)->setChartSize(m_rect); + update(); + } void QChart::setMargin(int margin) diff --git a/src/qchart.h b/src/qchart.h index f3d8353..7447f0a 100644 --- a/src/qchart.h +++ b/src/qchart.h @@ -2,36 +2,42 @@ #define CHART_H #include -#include +//TODO: temporary class +#include #include QCHART_BEGIN_NAMESPACE +class Axis; +class XYGrid; +class QChartSeries; + class QCHART_EXPORT QChart : public QGraphicsItem { -public: - enum DataSeriesType { - DataSeriesTypeLine = 0, - DataSeriesTypeArea, - DataSeriesTypeBar, - DataSeriesTypePie, - DataSeriesTypeScatter, - DataSeriesTypeSpline - }; - -protected: - QChart(QGraphicsItem* parent =0); public: + QChart(QGraphicsItem* parent = 0); virtual ~QChart(); - static QChart* createXYLineChart(const QList& dataset); + //from QGraphicsItem + virtual QRectF boundingRect() const; + virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){}; + + void addSeries(QChartSeries* series); - virtual void setSize(const QSizeF& rect)=0; + virtual void setSize(const QSizeF& rect); void setMargin(int margin); int margin() const { return m_marginSize;} private: + QRect m_rect; + QList m_series; + Axis* m_axisX; + Axis* m_axisY; + XYGrid* m_grid; + QList m_plotDataList; + QList m_items; + int m_plotDataIndex; int m_marginSize; }; diff --git a/src/qchartwidget.cpp b/src/qchartwidget.cpp index b07bee8..1956c23 100644 --- a/src/qchartwidget.cpp +++ b/src/qchartwidget.cpp @@ -1,51 +1,63 @@ #include "qchartwidget.h" -#include "qxyseries.h" -#include "xylinechart_p.h" +#include "qchartseries.h" #include #include +#include QCHART_BEGIN_NAMESPACE class QChartWidgetPrivate { public: - QChartWidgetPrivate(QWidget *parent) : m_view(0), m_scene(0), m_chart(0) { + QChartWidgetPrivate(QChartWidget *parent) : + m_view(0), + m_scene(0), + m_chart(0), + q_ptr( parent ) + { m_scene = new QGraphicsScene(); - m_view = new QGraphicsView(m_scene, parent); - m_view->resize(490, 300); - m_view->show(); + m_view = new QGraphicsView(parent); + m_view->setScene(m_scene); + m_chart = new QChart(); + m_scene->addItem(m_chart); } + ~QChartWidgetPrivate() { - delete m_view; - delete m_scene; } QGraphicsView *m_view; QGraphicsScene *m_scene; QChart* m_chart; + QChartWidget * const q_ptr; + Q_DECLARE_PUBLIC(QChartWidget); }; QChartWidget::QChartWidget(QWidget *parent) : QWidget(parent), - d(new QChartWidgetPrivate(this)) + d_ptr(new QChartWidgetPrivate(this)) { - setMinimumSize(d->m_view->size()); + } QChartWidget::~QChartWidget() { - delete d; + delete d_ptr; } -void QChartWidget::addDataSeries( - QChart::DataSeriesType dataSeriesType, - QList dataset) +void QChartWidget::resizeEvent(QResizeEvent *event) { - // TODO: implement management of several data series of different types + Q_D(QChartWidget); + d->m_view->resize(size().width(),size().height()); + d->m_scene->setSceneRect(0,0,size().width(),size().height()); + d->m_chart->setSize(size()); + QWidget::resizeEvent(event); +} - d->m_chart = QChart::createXYLineChart(dataset); - d->m_scene->addItem(d->m_chart); - d->m_chart->setSize(this->size()); + +void QChartWidget::addSeries(QChartSeries* series) +{ + Q_D(QChartWidget); + d->m_chart->addSeries(series); } #include "moc_qchartwidget.cpp" diff --git a/src/qchartwidget.h b/src/qchartwidget.h index 4679f16..8fa3858 100644 --- a/src/qchartwidget.h +++ b/src/qchartwidget.h @@ -7,7 +7,7 @@ QCHART_BEGIN_NAMESPACE -class QXYSeries; +class QChartSeries; class QChartWidgetPrivate; class QCHART_EXPORT QChartWidget : public QWidget @@ -16,19 +16,18 @@ class QCHART_EXPORT QChartWidget : public QWidget public: explicit QChartWidget(QWidget *parent = 0); ~QChartWidget(); - // TODO: replace QXYSeries list with a charts data API - // TODO: return QChartDataSeries - void addDataSeries(QChart::DataSeriesType dataSeriesType, QList dataset); -signals: + //implement from QWidget + void resizeEvent(QResizeEvent *event); -public slots: + void addSeries(QChartSeries* series); +protected: + QChartWidgetPrivate * const d_ptr; private: - friend class QChartWidgetPrivate; Q_DISABLE_COPY(QChartWidget) -// Q_DECLARE_PRIVATE(QChartWidget) - QChartWidgetPrivate * const d; + Q_DECLARE_PRIVATE(QChartWidget) + }; QCHART_END_NAMESPACE diff --git a/src/src.pro b/src/src.pro index 1cb11ea..e337848 100644 --- a/src/src.pro +++ b/src/src.pro @@ -6,9 +6,8 @@ CONFIG += debug_and_release CONFIG(debug, debug|release):TARGET = QChartd SOURCES += \ - xylinechart/qchartgraphicswidget.cpp \ - xylinechart/qxyseries.cpp \ - xylinechart/xylinechart.cpp \ + xylinechart/qxychartseries.cpp \ + xylinechart/xylinechartitem.cpp \ xylinechart/xygrid.cpp \ xylinechart/xyplotdata.cpp \ qchart.cpp \ @@ -16,16 +15,18 @@ SOURCES += \ qchartwidget.cpp PRIVATE_HEADERS += \ - xylinechart/xylinechart_p.h \ + xylinechart/xylinechartitem_p.h \ xylinechart/xygrid_p.h \ - xylinechart/xyplotdata_p.h \ axis_p.h + PUBLIC_HEADERS += \ - xylinechart/qxyseries.h \ - xylinechart/qchartgraphicswidget.h \ + qchartseries.h \ qchart.h \ qchartwidget.h \ - qchartconfig.h + qchartconfig.h \ + xylinechart/qxychartseries.h \ + xylinechart/xyplotdata_p.h # to be removed + HEADERS += $$PUBLIC_HEADERS HEADERS += $$PRIVATE_HEADERS diff --git a/src/xylinechart/qxyseries.cpp b/src/xylinechart/qxychartseries.cpp similarity index 73% rename from src/xylinechart/qxyseries.cpp rename to src/xylinechart/qxychartseries.cpp index 7c32022..7340fd2 100644 --- a/src/xylinechart/qxyseries.cpp +++ b/src/xylinechart/qxychartseries.cpp @@ -1,46 +1,51 @@ -#include "qxyseries.h" +#include "qxychartseries.h" QCHART_BEGIN_NAMESPACE -QXYSeries::QXYSeries(): +QXYChartSeries::QXYChartSeries(QObject* parent):QChartSeries(parent), m_color(Qt::black) { } -QXYSeries::~QXYSeries() +QXYChartSeries::~QXYChartSeries() { } +QXYChartSeries* QXYChartSeries::create(QObject* parent) +{ + //TODO: here we take QChartData when it is ready + // return null if malformed; + return new QXYChartSeries(parent); +} -void QXYSeries::setColor(const QColor& color) +void QXYChartSeries::setColor(const QColor& color) { m_color = color; } - -void QXYSeries::add(qreal x,qreal y) +void QXYChartSeries::add(qreal x,qreal y) { m_x< #include QCHART_BEGIN_NAMESPACE -class QCHART_EXPORT QXYSeries +class QCHART_EXPORT QXYChartSeries : public QChartSeries { +private: + QXYChartSeries(QObject* parent=0); public: - QXYSeries(); - virtual ~QXYSeries(); + virtual ~QXYChartSeries(); + + //implemented from QChartSeries + static QXYChartSeries* create(QObject* parent=0); + virtual QChartSeriesType type() const { return QChartSeries::LINE;}; + void add(qreal x, qreal y); void clear(); void setColor(const QColor& color); @@ -19,7 +26,7 @@ public: int count() const; qreal x(int pos) const; qreal y(int pos) const; - friend QDebug operator<< (QDebug d, const QXYSeries series); + friend QDebug operator<< (QDebug d, const QXYChartSeries series); private: QColor m_color; diff --git a/src/xylinechart/xygrid.cpp b/src/xylinechart/xygrid.cpp index fb11f92..0875099 100644 --- a/src/xylinechart/xygrid.cpp +++ b/src/xylinechart/xygrid.cpp @@ -1,11 +1,10 @@ #include "xygrid_p.h" -#include "xylinechart_p.h" #include +#include QCHART_BEGIN_NAMESPACE -XYGrid::XYGrid(const XYLineChart* const chart, QGraphicsItem* parent):QGraphicsItem(parent), -m_chart(chart) +XYGrid::XYGrid(QGraphicsItem* parent):QGraphicsItem(parent) { } @@ -14,10 +13,15 @@ XYGrid::~XYGrid() // TODO Auto-generated destructor stub } -void XYGrid::setSize(const QSizeF& size) { +void XYGrid::setSize(const QSizeF& size) +{ m_rect.setSize(size.toSize()); } +void XYGrid::setXYPlotData(const XYPlotData& xyPlotData) +{ + m_xyPlotData = xyPlotData; +} QRectF XYGrid::boundingRect() const { @@ -26,42 +30,41 @@ QRectF XYGrid::boundingRect() const void XYGrid::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget) { - if (!m_rect.isValid()) - return; - const XYPlotData& plotData = m_chart->xyPlotData(); + if (!m_rect.isValid()) + return; - const qreal deltaX = (m_rect.width() -1) / plotData.ticksX(); - const qreal deltaY = (m_rect.height() - 1) / plotData.ticksY(); + const qreal deltaX = (m_rect.width() -1) / m_xyPlotData.ticksX(); + const qreal deltaY = (m_rect.height() - 1) / m_xyPlotData.ticksY(); - for (int i = 0; i <= plotData.ticksX(); ++i) { + for (int i = 0; i <= m_xyPlotData.ticksX(); ++i) { - int x = i * deltaX + m_rect.left(); - qreal label = plotData.m_minX + (i * plotData.spanX() - / plotData.ticksX()); - painter->drawLine(x, m_rect.top()+1, x, m_rect.bottom()); - //painter->drawLine(x, m_rect.bottom(), x, m_rect.bottom() + 5); + int x = i * deltaX + m_rect.left(); + qreal label = m_xyPlotData.m_minX + (i * m_xyPlotData.spanX() + / m_xyPlotData.ticksX()); + painter->drawLine(x, m_rect.top()+1, x, m_rect.bottom()); + //painter->drawLine(x, m_rect.bottom(), x, m_rect.bottom() + 5); - painter->drawText(x - 50, m_rect.bottom() + 5, 100, 20, - Qt::AlignHCenter | Qt::AlignTop, - QString::number(label)); - } + painter->drawText(x - 50, m_rect.bottom() + 5, 100, 20, + Qt::AlignHCenter | Qt::AlignTop, + QString::number(label)); + } - for (int j = 0; j <= plotData.ticksY(); ++j) { + for (int j = 0; j <= m_xyPlotData.ticksY(); ++j) { - int y = j * -deltaY + m_rect.bottom(); - qreal label = plotData.m_minY + (j * plotData.spanY() - / plotData.ticksY()); + int y = j * -deltaY + m_rect.bottom(); + qreal label = m_xyPlotData.m_minY + (j * m_xyPlotData.spanY() + / m_xyPlotData.ticksY()); - painter->drawLine(m_rect.left(), y, m_rect.right()-1, y); - //painter->drawLine(m_rect.left() - 5, y, m_rect.left(), y); - //TODO : margin = 50 ; - painter->drawText(m_rect.left() - 50, y - 10, 50 - 5, 20, - Qt::AlignRight | Qt::AlignVCenter, - QString::number(label)); - } + painter->drawLine(m_rect.left(), y, m_rect.right()-1, y); + //painter->drawLine(m_rect.left() - 5, y, m_rect.left(), y); + //TODO : margin = 50 ; + painter->drawText(m_rect.left() - 50, y - 10, 50 - 5, 20, + Qt::AlignRight | Qt::AlignVCenter, + QString::number(label)); + } - //painter->drawRect(m_rect.adjusted(0, 0, -1, -1)); + //painter->drawRect(m_rect.adjusted(0, 0, -1, -1)); } QCHART_END_NAMESPACE diff --git a/src/xylinechart/xygrid_p.h b/src/xylinechart/xygrid_p.h index fe55a2b..81714da 100644 --- a/src/xylinechart/xygrid_p.h +++ b/src/xylinechart/xygrid_p.h @@ -2,28 +2,28 @@ #define XYGRID_H_ #include +#include #include QCHART_BEGIN_NAMESPACE -class XYPlotData; -class XYLineChart; - class XYGrid : public QGraphicsItem { public: - XYGrid(const XYLineChart* const chart,QGraphicsItem* parent = 0); + XYGrid(QGraphicsItem* parent = 0); virtual ~XYGrid(); //from QGraphicsItem virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + //TODO: this is just temporary interface + void setXYPlotData(const XYPlotData& xyPlotData); void setSize(const QSizeF& rect); private: QRectF m_rect; - const XYLineChart* const m_chart; + XYPlotData m_xyPlotData; }; QCHART_END_NAMESPACE diff --git a/src/xylinechart/xylinechart.cpp b/src/xylinechart/xylinechart.cpp deleted file mode 100644 index fcce19b..0000000 --- a/src/xylinechart/xylinechart.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "xylinechart_p.h" -#include "axis_p.h" -#include "xygrid_p.h" -#include -#include -#include - -QCHART_BEGIN_NAMESPACE - -XYLineChart::XYLineChart(QGraphicsItem *parent):QChart(parent), -m_axisX(new Axis(this)), -m_axisY(new Axis(this)), -m_grid(new XYGrid(this,this)), -m_plotDataIndex(0) -{ - // set axis - m_axisY->rotate(90); - - XYPlotData data; - data.m_minX = 0.0; - data.m_maxX = 100.0; - data.m_minY = 0.0; - data.m_maxY = 100.0; - data.m_ticksX=4; - data.m_ticksY=4; - - m_plotDataList.clear(); - m_plotDataList << data; - -} - -void XYLineChart::setSize(const QSizeF& size) { - - m_rect = QRect(QPoint(0,0),size.toSize()); - m_rect.adjust(margin(),margin(),-margin(),-margin()); - updateGeometry(); -} - -void XYLineChart::addXYSeries(const QXYSeries* series) -{ - m_series<setPos(m_rect.bottomLeft()); - //m_axisX->setLength(m_rect.width()); - //m_axisY->setLength(m_rect.height()); - m_grid->setPos(m_rect.topLeft()); - m_grid->setSize(m_rect.size()); - update(); -} - -void XYLineChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget) -{ - const XYPlotData& xyplotData = xyPlotData(); - - if (!m_rect.isValid()) - return; - - painter->setClipRect(m_rect.adjusted(+1, +1, -1, -1)); - - const qreal deltaX = (m_rect.width()-1)/xyplotData.spanX(); - const qreal deltaY = (m_rect.height()-1)/xyplotData.spanY(); - - foreach (const QXYSeries* series, m_series) { - - QPolygonF polyline(series->count()); - - for (int j = 0; j < series->count(); ++j) { - qreal dx = series->x(j) - xyplotData.m_minX; - qreal dy = series->y(j) - xyplotData.m_minY; - qreal x = (dx * deltaX) + m_rect.left(); - qreal y = - (dy * deltaY) + m_rect.bottom(); - polyline[j] = QPointF(x, y); - } - painter->setPen(series->color()); - painter->drawPolyline(polyline); - } -} -QCHART_END_NAMESPACE diff --git a/src/xylinechart/xylinechart_p.h b/src/xylinechart/xylinechart_p.h deleted file mode 100644 index f310a59..0000000 --- a/src/xylinechart/xylinechart_p.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef XYLINECHART_H -#define XYLINECHART_H - -#include "qchartconfig.h" -#include "qchart.h" -#include "qxyseries.h" -#include "xyplotdata_p.h" - -QCHART_BEGIN_NAMESPACE - -class Axis; -class XYGrid; - -class XYLineChart : public QChart -{ - -public: - XYLineChart(QGraphicsItem *parent = 0); - virtual ~XYLineChart(){}; - - //from QGraphicsItem - virtual QRectF boundingRect() const; - virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - - //from QChart - virtual void setSize(const QSizeF& size); - - void addXYSeries(const QXYSeries* series); - - const XYPlotData& xyPlotData() const { return m_plotDataList.at(m_plotDataIndex); } - -private: - void updateGeometry(); - void drawData(QPainter *painter); - -private: - QRect m_rect; - QList m_series; - Axis* m_axisX; - Axis* m_axisY; - XYGrid* m_grid; - QPointF* m_origin; - QMap > curveMap; - QList m_plotDataList; - int m_plotDataIndex; - - -}; - -QCHART_END_NAMESPACE - -#endif diff --git a/src/xylinechart/xylinechartitem.cpp b/src/xylinechart/xylinechartitem.cpp new file mode 100644 index 0000000..b39b2a6 --- /dev/null +++ b/src/xylinechart/xylinechartitem.cpp @@ -0,0 +1,69 @@ +#include "xylinechartitem_p.h" +#include "axis_p.h" +#include "xygrid_p.h" +#include "qxychartseries.h" +#include +#include +#include + +QCHART_BEGIN_NAMESPACE + +XYLineChartItem::XYLineChartItem(QXYChartSeries* series,QGraphicsItem *parent):QGraphicsItem(parent), +m_series(series), +m_dirtyGeometry(true) +{ + +} + +void XYLineChartItem::setChartSize(const QRectF& rect) +{ + m_rect = rect; + m_dirtyGeometry = true; +} + +void XYLineChartItem::setXYPlotData(const XYPlotData& data){ + m_xyPlotData=data; + m_dirtyGeometry = true; +} + +QRectF XYLineChartItem::boundingRect() const +{ + return m_polyline.boundingRect(); +} + + +void XYLineChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget) +{ + if(m_dirtyGeometry) { + + m_dirtyGeometry=false; + + if (!m_rect.isValid()) + return; + + painter->setClipRect(m_rect.adjusted(+1, +1, -1, -1)); + + const qreal deltaX = (m_rect.width()-1)/m_xyPlotData.spanX(); + const qreal deltaY = (m_rect.height()-1)/m_xyPlotData.spanY(); + + m_polyline.clear(); + m_polyline.resize(m_series->count()); + + for (int j = 0; j < m_series->count(); ++j) { + qreal dx = m_series->x(j) - m_xyPlotData.m_minX; + qreal dy = m_series->y(j) - m_xyPlotData.m_minY; + qreal x = (dx * deltaX) + m_rect.left(); + qreal y = - (dy * deltaY) + m_rect.bottom(); + m_polyline[j] = QPointF(x, y); + } + painter->setPen(m_series->color()); + painter->drawPolyline(m_polyline); + } + + painter->setClipRect(m_rect.adjusted(+1, +1, -1, -1)); + painter->setPen(m_series->color()); + painter->drawPolyline(m_polyline); + +} + +QCHART_END_NAMESPACE diff --git a/src/xylinechart/xylinechartitem_p.h b/src/xylinechart/xylinechartitem_p.h new file mode 100644 index 0000000..8826de9 --- /dev/null +++ b/src/xylinechart/xylinechartitem_p.h @@ -0,0 +1,37 @@ +#ifndef XYLINECHARTITEM_H +#define XYLINECHARTITEM_H + +#include "qchartconfig.h" +#include "qchart.h" +#include "xyplotdata_p.h" + +QCHART_BEGIN_NAMESPACE + +class QXYChartSeries; + +class XYLineChartItem : public QGraphicsItem +{ + +public: + XYLineChartItem(QXYChartSeries* m_series,QGraphicsItem *parent = 0); + virtual ~ XYLineChartItem(){}; + + //from QGraphicsItem + virtual QRectF boundingRect() const; + virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + + //TODO: this is just temporary interface + void setChartSize(const QRectF& size); + void setXYPlotData(const XYPlotData& data); + +private: + QRectF m_rect; + QPolygonF m_polyline; + QXYChartSeries* m_series; + XYPlotData m_xyPlotData; + bool m_dirtyGeometry; +}; + +QCHART_END_NAMESPACE + +#endif diff --git a/test/chartwidgettest/mainwidget.cpp b/test/chartwidgettest/mainwidget.cpp index 7d1b3bf..b01be9c 100644 --- a/test/chartwidgettest/mainwidget.cpp +++ b/test/chartwidgettest/mainwidget.cpp @@ -100,7 +100,7 @@ void MainWidget::addSeries(QString series, QString data) { qDebug() << "addSeries: " << series << " data: " << data; - QXYSeries* series0 = new QXYSeries(); + QXYChartSeries* series0 = new QXYChartSeries(); if (data == "linear") { // TODO @@ -108,7 +108,7 @@ void MainWidget::addSeries(QString series, QString data) series0->setColor(Qt::blue); for (int x = 0; x < 100; x++) series0->add(x, abs(sin(3.14159265358979 / 50 * x) * 100)); - QList dataset; + QList dataset; dataset << series0; } else if (data == "SIN + random") { series0->setColor(Qt::blue); @@ -120,7 +120,7 @@ void MainWidget::addSeries(QString series, QString data) // TODO: check if data has a valid file name } - QList dataset; + QList dataset; dataset << series0; if (series == "Scatter") {