QT -- QChart畫折線圖


First:最終效果

​ 本文最后將會實現如下效果:

QtCharts折線圖效果

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  、 參考

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM