QtCharts目前已經可以免費使用,而且使用非常方便、快捷,並且提供了各種類別的支持(例如:曲線圖,柱形圖,折線圖,餅圖等)。
這里講解qml端圖表顯示,C++端進行數據整合,並能實現實時數據刷新(該部分參考了StackOverflow上國外網友的經驗)。
首先,在pro中要添加charts,widgets,即
Qt += qml quick widgets charts
在main.cpp中,添加頭文件 #include <QApplication>( 注, pro中要先添加widgets,不然該頭文件下會顯示橫線,表明找不到),並在main
函數修改為下面的形式:
QCoreApplication app(argc,argv) //在5.0以上版本中默認是這樣實現的 修改為: QApplication app(argc,argv)
到這里我們就將基本的東西配置好了,下面分兩個部分講解如何實現實時刷新的圖表。
1、qml界面實現;
ChartView用於顯示一個圖表,可以說相當於容器,在這個區域內我們進行圖表繪畫,這里可以設定圖表的大小,背景顏色,風格等等,不多說。
AbstractSeries是所有圖表類的基類,它的直接派生子類為AbstractBarSeries, AreaSeries, BoxPlotSeries, CandlestickSeries, PieSeries, and XYSeries,
通過XYSeries又可以派生出LineSeries, ScatterSeries, and SplineSeries。
AbstractAxis是所有圖表軸的基類,派生子類為BarCategoryAxis, CategoryAxis, DateTimeAxis, LogValueAxis, and ValueAxis。
界面設計類似如下:
import QtQuick 2.0 import QtCharts 2.2 ChartView { id: chartsview; width: 400 height: 300 theme: ChartView.ChartThemeBrownSand antialiasing: true ValueAxis{ id: axiasX; max: 1; min: 0; } ValueAxis{ id: axiasY; max: 1; min: 0; } LineSeries{ id: lineseries; axisX: axiasX; axisY: axiasY; } Component.onCompleted: { DataSource.setSeries(chartsview.series(0)); } }
注: 該文還沒有結束,后續將繼續;