@@ -1,12 +1,9 | |||
|
1 | 1 | #include "qchart.h" |
|
2 | 2 | #include "qchartseries.h" |
|
3 | #include "qscatterseries.h" | |
|
4 | #include "qscatterseries_p.h" | |
|
5 | 3 | #include "xylinechartitem_p.h" |
|
6 | 4 | #include "xyplotdomain_p.h" |
|
7 | 5 | #include "axis_p.h" |
|
8 | 6 | #include "xygrid_p.h" |
|
9 | #include <QGraphicsScene> | |
|
10 | 7 | #include <QDebug> |
|
11 | 8 | |
|
12 | 9 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
@@ -87,30 +84,6 void QChart::addSeries(QChartSeries* series) | |||
|
87 | 84 | } |
|
88 | 85 | } |
|
89 | 86 | |
|
90 | QChartSeries* QChart::createSeries(QList<qreal> x, QList<qreal> y, QChartSeries::QChartSeriesType type) | |
|
91 | { | |
|
92 | Q_D(QChart); | |
|
93 | ||
|
94 | // TODO: support also other types | |
|
95 | Q_ASSERT(type == QChartSeries::SeriesTypeScatter); | |
|
96 | QChartSeries *series = 0; | |
|
97 | ||
|
98 | switch (type) { | |
|
99 | case QChartSeries::SeriesTypeScatter: { | |
|
100 | QScatterSeries *scatterSeries = new QScatterSeries(x, y, this); | |
|
101 | //scatterSeries->d->set | |
|
102 | d->m_items.append(scatterSeries->d); | |
|
103 | scene()->addItem(scatterSeries->d); | |
|
104 | //series = qobject_cast<QChartSeries *>(scatterSeries); | |
|
105 | break; | |
|
106 | } | |
|
107 | default: | |
|
108 | break; | |
|
109 | } | |
|
110 | ||
|
111 | return series; | |
|
112 | } | |
|
113 | ||
|
114 | 87 | void QChart::setSize(const QSizeF& size) |
|
115 | 88 | { |
|
116 | 89 | Q_D(QChart); |
@@ -120,11 +93,10 void QChart::setSize(const QSizeF& size) | |||
|
120 | 93 | d->m_grid->setPos(d->m_rect.topLeft()); |
|
121 | 94 | d->m_grid->setSize(d->m_rect.size()); |
|
122 | 95 | d->m_plotDataList[0].m_viewportRect = d->m_rect; |
|
123 | // TODO: line chart items would need to be updated separately as they don't support update | |
|
124 | // via paint method | |
|
125 | // foreach(QGraphicsItem* item , d->m_items) { | |
|
126 | // reinterpret_cast<XYLineChartItem*>(item);//->updateXYPlotData(d->m_plotDataList.at(0)); | |
|
96 | foreach(QGraphicsItem* item , d->m_items) | |
|
97 | reinterpret_cast<XYLineChartItem*>(item)->updateXYPlotData(d->m_plotDataList.at(0)); | |
|
127 | 98 | update(); |
|
99 | ||
|
128 | 100 | } |
|
129 | 101 | |
|
130 | 102 | int QChart::margin() const |
@@ -2,7 +2,6 | |||
|
2 | 2 | #define CHART_H |
|
3 | 3 | |
|
4 | 4 | #include <qchartglobal.h> |
|
5 | #include <qchartseries.h> | |
|
6 | 5 | #include <QGraphicsItem> |
|
7 | 6 | |
|
8 | 7 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
@@ -13,16 +12,9 class QChartSeries; | |||
|
13 | 12 | class XYPlotDomain; |
|
14 | 13 | class QChartPrivate; |
|
15 | 14 | |
|
16 | // TODO: We don't need to have QChart tied to QGraphicsItem: | |
|
17 | //class QTCOMMERCIALCHART_EXPORT QChart | |
|
18 | //class QTCOMMERCIALCHART_EXPORT QChartGraphicsItem : public QGraphicsItem { | |
|
19 | // public: QChartGraphicsItem(QChart &chart); | |
|
20 | ||
|
21 | /*! | |
|
22 | * TODO: define the responsibilities | |
|
23 | */ | |
|
24 | class QTCOMMERCIALCHART_EXPORT QChart : public QGraphicsItem, public QObject | |
|
15 | class QTCOMMERCIALCHART_EXPORT QChart : public QGraphicsItem | |
|
25 | 16 | { |
|
17 | ||
|
26 | 18 | public: |
|
27 | 19 | QChart(QGraphicsItem* parent = 0); |
|
28 | 20 | virtual ~QChart(); |
@@ -32,9 +24,6 public: | |||
|
32 | 24 | virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){}; |
|
33 | 25 | |
|
34 | 26 | void addSeries(QChartSeries* series); |
|
35 | //TODO: QChartSeries* createSeries(QSeriesData *data, QChartSeries::QChartSeriesType type); | |
|
36 | // TODO: who owns the series now? maybe owned by chart and returned a reference instead... | |
|
37 | QChartSeries* createSeries(QList<qreal> x, QList<qreal> y, QChartSeries::QChartSeriesType type); | |
|
38 | 27 | |
|
39 | 28 | virtual void setSize(const QSizeF& rect); |
|
40 | 29 | void setMargin(int margin); |
@@ -29,6 +29,7 public: | |||
|
29 | 29 |
static QChartSeries* create(QObject* parent = 0) |
|
30 | 30 | //pure virtual |
|
31 | 31 | virtual QChartSeriesType type() const = 0; |
|
32 | ||
|
32 | 33 | }; |
|
33 | 34 | |
|
34 | 35 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -19,7 +19,6 public: | |||
|
19 | 19 | m_view->setScene(m_scene); |
|
20 | 20 | m_chart = new QChart(); |
|
21 | 21 | m_scene->addItem(m_chart); |
|
22 | m_view->show(); | |
|
23 | 22 | } |
|
24 | 23 | |
|
25 | 24 | ~QChartWidgetPrivate() { |
@@ -65,12 +64,6 void QChartWidget::addSeries(QChartSeries* series) | |||
|
65 | 64 | d->m_chart->addSeries(series); |
|
66 | 65 | } |
|
67 | 66 | |
|
68 | QChartSeries* QChartWidget::createSeries(QList<qreal> x, QList<qreal> y, QChartSeries::QChartSeriesType type) | |
|
69 | { | |
|
70 | Q_D(QChartWidget); | |
|
71 | return d->m_chart->createSeries(x, y, type); | |
|
72 | } | |
|
73 | ||
|
74 | 67 | #include "moc_qchartwidget.cpp" |
|
75 | 68 | |
|
76 | 69 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -21,10 +21,7 public: | |||
|
21 | 21 | void resizeEvent(QResizeEvent *event); |
|
22 | 22 | QSize sizeHint() const; |
|
23 | 23 | |
|
24 | // TODO: addSeries and createSeries are optional solutions | |
|
25 | 24 | void addSeries(QChartSeries* series); |
|
26 | QChartSeries* createSeries(QList<qreal> x, QList<qreal> y, QChartSeries::QChartSeriesType type); | |
|
27 | ||
|
28 | 25 | protected: |
|
29 | 26 | QChartWidgetPrivate * const d_ptr; |
|
30 | 27 |
@@ -1,7 +1,14 | |||
|
1 | !include( ../common.pri ) { | |
|
2 | error( Couldn't find the common.pri file! ) | |
|
3 | } | |
|
4 | ||
|
5 | ||
|
1 | 6 | TARGET = QtCommercialChart |
|
7 | DESTDIR = $$CHART_BUILD_LIB_DIR | |
|
2 | 8 | TEMPLATE = lib |
|
3 | 9 | QT += core \ |
|
4 | 10 | gui |
|
11 | ||
|
5 | 12 | CONFIG += debug_and_release |
|
6 | 13 | CONFIG(debug, debug|release):TARGET = QtCommercialChartd |
|
7 | 14 | |
@@ -10,24 +17,19 SOURCES += \ | |||
|
10 | 17 | xylinechart/xylinechartitem.cpp \ |
|
11 | 18 | xylinechart/xygrid.cpp \ |
|
12 | 19 | xylinechart/xyplotdomain.cpp \ |
|
13 | qscatterseries.cpp \ | |
|
14 | 20 | qchart.cpp \ |
|
15 | 21 | axis.cpp \ |
|
16 |
qchartwidget.cpp |
|
|
17 | qchartdata.cpp | |
|
22 | qchartwidget.cpp | |
|
18 | 23 | |
|
19 | 24 | PRIVATE_HEADERS += \ |
|
20 | 25 | xylinechart/xylinechartitem_p.h \ |
|
21 | 26 | xylinechart/xyplotdomain_p.h \ |
|
22 | 27 | xylinechart/xygrid_p.h \ |
|
23 | qscatterseries_p.h \ | |
|
24 | 28 | axis_p.h |
|
25 | 29 | |
|
26 | 30 | PUBLIC_HEADERS += \ |
|
27 | 31 | qchartseries.h \ |
|
28 | qscatterseries.h \ | |
|
29 | 32 | qchart.h \ |
|
30 | qchartdata.h \ | |
|
31 | 33 | qchartwidget.h \ |
|
32 | 34 | qchartglobal.h \ |
|
33 | 35 | xylinechart/qxychartseries.h |
@@ -38,10 +40,12 HEADERS += $$PRIVATE_HEADERS | |||
|
38 | 40 | INCLUDEPATH += xylinechart \ |
|
39 | 41 | . |
|
40 | 42 | |
|
41 | OBJECTS_DIR = ../build/lib | |
|
42 | MOC_DIR = ../build/lib | |
|
43 | UI_DIR = ../build/lib | |
|
44 | RCC_DIR = ../build/lib | |
|
43 | OBJECTS_DIR = $$CHART_BUILD_DIR/lib | |
|
44 | MOC_DIR = $$CHART_BUILD_DIR/lib | |
|
45 | UI_DIR = $$CHART_BUILD_DIR/lib | |
|
46 | RCC_DIR = $$CHART_BUILD_DIR/lib | |
|
47 | ||
|
48 | ||
|
45 | 49 | DEFINES += QTCOMMERCIALCHART_LIBRARY |
|
46 | 50 | |
|
47 | 51 | public_headers.path = $$[QT_INSTALL_HEADERS]/QtCommercialChart |
@@ -49,3 +53,21 public_headers.files = $$PUBLIC_HEADERS | |||
|
49 | 53 | target.path = $$[QT_INSTALL_LIBS] |
|
50 | 54 | INSTALLS += target \ |
|
51 | 55 | public_headers |
|
56 | ||
|
57 | ||
|
58 | install_build_headers.name = bild_headers | |
|
59 | install_build_headers.output = $$CHART_BUILD_HEADER_DIR/${QMAKE_FILE_BASE}.h | |
|
60 | install_build_headers.input = PUBLIC_HEADERS | |
|
61 | install_build_headers.commands = $$QMAKE_COPY ${QMAKE_FILE_NAME} $$CHART_BUILD_HEADER_DIR | |
|
62 | install_build_headers.CONFIG += target_predeps no_link | |
|
63 | QMAKE_EXTRA_COMPILERS += install_build_headers | |
|
64 | ||
|
65 | chartversion.target = qchartversion_p.h | |
|
66 | chartversion.commands = @echo "build_time" > $$chartversion.target; | |
|
67 | chartversion.depends = $$HEADERS $$SOURCES | |
|
68 | PRE_TARGETDEPS += qchartversion_p.h | |
|
69 | QMAKE_CLEAN+= qchartversion_p.h | |
|
70 | QMAKE_EXTRA_TARGETS += chartversion | |
|
71 | ||
|
72 | unix:QMAKE_DISTCLEAN += -r $$CHART_BUILD_HEADER_DIR $$CHART_BUILD_LIB_DIR | |
|
73 | win32:QMAKE_DISTCLEAN += $$CHART_BUILD_HEADER_DIR $$CHART_BUILD_LIB_DIR No newline at end of file |
@@ -101,46 +101,38 void MainWidget::addSeries(QString series, QString data) | |||
|
101 | 101 | m_defaultSeries = series; |
|
102 | 102 | |
|
103 | 103 | QXYChartSeries* series0 = 0; |
|
104 | QChartSeries* scatterSeries = 0; | |
|
105 | // TODO: a dedicated data class for storing x and y values | |
|
106 | QList<qreal> x; | |
|
107 | QList<qreal> y; | |
|
108 | 104 | |
|
109 | if (data == "linear") { | |
|
110 | for (int i = 0; i < 10; i++) { | |
|
111 | x.append(i); | |
|
112 | y.append(10); | |
|
105 | // TODO: color of the series | |
|
106 | if (series == "Scatter") { | |
|
107 | series0 = QXYChartSeries::create(); | |
|
108 | } else if (series == "Line") { | |
|
109 | series0 = QXYChartSeries::create(); | |
|
110 | } else { | |
|
111 | // TODO | |
|
112 | series0 = QXYChartSeries::create(); | |
|
113 | 113 |
|
|
114 | ||
|
115 | if (data == "linear") { | |
|
116 | for (int i = 0; i < 10; i++) | |
|
117 | series0->add(i, 10); | |
|
114 | 118 | } else if (data == "linear, 1M") { |
|
115 |
for (int i = 0; i < 10000; i++) |
|
|
116 |
|
|
|
117 | y.append(20); | |
|
118 | } | |
|
119 | for (int i = 0; i < 1000000; i++) | |
|
120 | series0->add(i, 20); | |
|
119 | 121 | } else if (data == "SIN") { |
|
120 |
for (int |
|
|
121 | x.append(i); | |
|
122 | y.append(abs(sin(3.14159265358979 / 50 * i) * 100)); | |
|
123 | } | |
|
122 | for (int x = 0; x < 100; x++) | |
|
123 | series0->add(x, abs(sin(3.14159265358979 / 50 * x) * 100)); | |
|
124 | QList<QXYChartSeries*> dataset; | |
|
125 | dataset << series0; | |
|
124 | 126 | } else if (data == "SIN + random") { |
|
125 |
for (qreal |
|
|
126 |
x |
|
|
127 |
|
|
|
127 | for (qreal x = 0; x < 100; x += 0.1) { | |
|
128 | series0->add(x + (rand() % 5), | |
|
129 | abs(sin(3.14159265358979 / 50 * x) * 100) + (rand() % 5)); | |
|
128 | 130 | } |
|
129 | 131 | } else { |
|
130 | 132 | // TODO: check if data has a valid file name |
|
131 | 133 | } |
|
132 | 134 | |
|
133 | // TODO: color of the series | |
|
134 | if (series == "Scatter") { | |
|
135 | scatterSeries = m_chartWidget->createSeries(x, y, QChartSeries::SeriesTypeScatter); | |
|
136 | } else if (series == "Line") { | |
|
137 | series0 = QXYChartSeries::create(); | |
|
138 | for (int i = 0; i < 1000000; i++) | |
|
139 | series0->add(i, 20); | |
|
140 | 135 |
|
|
141 | } else { | |
|
142 | // TODO | |
|
143 | } | |
|
144 | 136 | } |
|
145 | 137 | |
|
146 | 138 | void MainWidget::chartTypeChanged(int itemIndex) |
|
1 | NO CONTENT: file was removed |
|
1 | NO CONTENT: file was removed |
|
1 | NO CONTENT: file was removed |
|
1 | NO CONTENT: file was removed |
|
1 | NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now