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));
}
}
注: 該文還沒有結束,后續將繼續;
