diff --git a/doc/images/scatterchart.png b/doc/images/scatterchart.png new file mode 100644 index 0000000000000000000000000000000000000000..e07ae81ac6dd0248286070189dadff35903d8e82 GIT binary patch literal 41091 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 Ig$^eAAN1t)Bar Chart example
  • Stacked Bar Chart example
  • Percent Bar Chart example
  • +
  • Scatter Chart example
  • Stacked Bar Chart Drilldown example
  • Line Chart example
  • Pie Chart example
  • diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc index 8f7f98d..40735ce 100644 --- a/doc/src/index.qdoc +++ b/doc/src/index.qdoc @@ -19,12 +19,12 @@ areachart + scatterchart barchart - percentbarcchart stackedbarchart - linechart + percentbarcchart scatterchart themechart @@ -33,6 +33,9 @@ barchart piechart + + linechart + \endraw diff --git a/example/example.pro b/example/example.pro index 738ee74..a82f6ed 100644 --- a/example/example.pro +++ b/example/example.pro @@ -5,7 +5,7 @@ SUBDIRS += linechart \ barchart \ stackedbarchart \ percentbarchart \ - scatter \ + scatterchart \ piechart \ piechartcustomization \ piechartdrilldown \ diff --git a/example/scatter/main.cpp b/example/scatterchart/main.cpp similarity index 63% rename from example/scatter/main.cpp rename to example/scatterchart/main.cpp index 1b5722f..1dc8359 100644 --- a/example/scatter/main.cpp +++ b/example/scatterchart/main.cpp @@ -10,42 +10,40 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); - //! [1] - // Create chart view - QChartView *chartView = new QChartView(); - chartView->setRenderHint(QPainter::Antialiasing); - // Add scatter series with linear test data with random "noise" +//! [1] QScatterSeries *scatter = new QScatterSeries(); - for (qreal i(0.0); i < 20; i += 0.5) { - qreal x = i + (qreal)(rand() % 100) / 100.0; - qreal y = i + (qreal)(rand() % 100) / 100.0; - (*scatter) << QPointF(x, y); - } - // Chart takes ownership - chartView->addSeries(scatter); - //! [1] - // And more - //! [2] - // *scatter << QPointF(2.0, 5.5) << QPointF(2.2, 5.4); - //! [2] - - //! [3] QBrush brush(Qt::red); - scatter->setBrush(brush); QPen pen(Qt::black); - pen.setWidth(3); + pen.setWidth(2); + scatter->setPen(pen); + scatter->setBrush(brush); scatter->setShape(QScatterSeries::MarkerShapeCircle); - scatter->setSize(25.0); - //! [3] + scatter->setSize(15.0); +//! [1] + +//! [2] + for (qreal i(0.0); i < 20; i += 0.5) { + qreal x = i + (qreal) (rand() % 100) / 100.0; + qreal y = i + (qreal) (rand() % 100) / 100.0; + scatter->add(x, y); + } + *scatter << QPointF(2.0, 5.5) << QPointF(2.2, 5.4); +//! [2] - // Use the chart widget as the central widget - QMainWindow w; - w.resize(400, 300); - w.setCentralWidget(chartView); - // w.setWindowFlags(Qt::FramelessWindowHint); - w.show(); +//! [3] + QMainWindow window; + QChartView *chartView = new QChartView(&window); + chartView->setRenderHint(QPainter::Antialiasing); + chartView->setChartTitle("Basic scatter chart example"); + chartView->addSeries(scatter); +//! [3] +//! [4] + window.setCentralWidget(chartView); + window.resize(400, 300); + window.show(); +//! [4] return a.exec(); } diff --git a/example/scatter/scatter.pro b/example/scatterchart/scatterchart.pro similarity index 80% rename from example/scatter/scatter.pro rename to example/scatterchart/scatterchart.pro index a91bbcb..5d58701 100644 --- a/example/scatter/scatter.pro +++ b/example/scatterchart/scatterchart.pro @@ -1,5 +1,5 @@ !include( ../example.pri ) { error( "Couldn't find the example.pri file!" ) } -TARGET = scatter +TARGET = scatterchart SOURCES += main.cpp