First:最終效果
本文最后將會實現如下效果:
1 、添加charts模塊
Qt Charts
作為一個獨立的模塊,在使用前需要在項目的pro
文件中添加:
QtExample.pro
:
# 添加Qt charts模塊
QT += charts
2 、包含charts頭文件並引用QT charts命名空間
- main.cpp:
// 包含line chart需要的頭文件 #include <QChartView> #include <QLineSeries> // 引用命名空間 QT_CHARTS_USE_NAMESPACE int main() { ... }
3 、創建QLineSeries並添加數據
// new 一個 QLineSeries實例 QLineSeries *series = new QLineSeries(); // 添加實驗數據,可以用 append 方法 或者 >> 操作符 series->append(0,2); series->append(QPointF(2,6)); series->append(3,8); series->append(7,9); series->append(11,3); //or *series << QPointF(11,2) << QPointF(15,5) << QPointF(18,4) << QPointF(19,2);
4 、創建QChart用於顯示數據
創建好series
后,需要創建一個QChart
實例並關聯series
,創建坐標才能將數據顯示出來:
- main.cpp:
QChart *chart = new QChart(); // 將圖例隱藏 chart->legend()->hide(); // 關聯series,這一步很重要,必須要將series關聯到QChart才能將數據渲染出來: chart->addSeries(series); // 開啟OpenGL,QLineSeries支持GPU繪制,Qt其他有的圖表類型是不支持的。 series->setUseOpenGL(true); // 創建默認的坐標系(笛卡爾坐標) chart->createDefaultAxes(); // 設置圖表標題 chart->setTitle(QStringLiteral("Qt line chart example"));
5 、創建QChartView對象並顯示圖表
這里創建QChartView
對象是為了將最終結果顯示到界面,如果不想用QChartView
,也可以選擇QGraphicsView scene
來顯示。
- main.cpp:
QChartView *view = new QChartView(chart); // 開啟抗鋸齒,讓顯示效果更好 view->setRenderHint(QPainter::Antialiasing); view->resize(400,300); // 顯示圖表 view->show();
6 、完整源碼
- QtExamples.cpp:
QT += charts SOURCES += \ main.cpp
- main.cpp:
// 包含頭文件 #include <QApplication> #include <QChartView> #include <QLineSeries> // 引用命名空間 QT_CHARTS_USE_NAMESPACE int main(int argc, char *argv[]) { QApplication a(argc, argv); QLineSeries *series = new QLineSeries(); series->append(0,2); series->append(QPointF(2,6)); series->append(3,8); series->append(7,9); series->append(11,3); *series << QPointF(11,2) << QPointF(15,5) << QPointF(18,4) << QPointF(19,2); QChart *chart = new QChart(); // 將圖例隱藏 chart->legend()->hide(); // 關聯series,這一步很重要,必須要將series關聯到QChart才能將數據渲染出來: chart->addSeries(series); // 開啟OpenGL,QLineSeries支持GPU繪制,Qt其他有的圖表類型是不支持的。 series->setUseOpenGL(true); // 創建默認的坐標系(笛卡爾坐標) chart->createDefaultAxes(); // 設置圖表標題 chart->setTitle(QStringLiteral("Qt line chart example")); QChartView *view = new QChartView(chart); // 開啟抗鋸齒,讓顯示效果更好 view->setRenderHint(QPainter::Antialiasing); view->resize(400,300); // 顯示圖表 view->show(); return a.exec(); }
7 、 參考
- Qt LineChart Example,或者直接在Qt Creator搜索**
linechart
**: