QtCharts在5.7免費之後,筆者開始嘗試使用,以取代Qwt。但在初學使用時,想把曲線顯示到MainWindon控件中,還是有些困擾,可能是Qwt用多了,潛意識並把QChart與QwtPlot對應。本文舉例說明如何把QChart曲線顯示到界面中的容器QWidget上。
QtCharts繪製曲線用到的幾個類
類名 | 描述 |
---|---|
QChartView | 用於顯示曲線 |
QChart | 相當於QwtPlot,圖表框架 |
QSplineSeries | 相當於QwtPlotCurve,曲線,有多種類型 |
1. QSplineSeries用來加載一個座標集,構成曲線的點集,所有設置或修改曲線的操作均在此類進行;
2. QChart創建一個圖標框,有標題、座標軸、圖例等,通過addSeries加入QSplineSeries ,即可實現含曲線的圖表;
3. QChartView 是一個容器,用來顯示QChart 圖表。
代碼示例
1. 創建一個繼承QChart的類MChar
using namespace QtCharts;
class MChart : public QChart
{
public:
MChart();
private:
QSplineSeries *series = new QSplineSeries();//創建一個曲線爲私有變量,用於加載點集
public:
void setCurve(double *xarr,double *yarr,int length); //便於操作,重寫函數用於繪製圖譜
};
2. 顯示曲線
double simuXs[5],simuYs[5]; //創建模擬點集
for(int i=0;i<5;i++)
{
simuXs[i]=i;
simuYs[i]=0.8*i;
}
chart->setCurve(simuXs,simuYs,5);//加載點集,構成曲線(直線)
QChartView *chartView = new QChartView(chart);//聲明QChartView 並創建實例,加載chart
QGridLayout *baseLayout = new QGridLayout(); //便於顯示,創建網格佈局
baseLayout->addWidget(chartView, 1, 0);
ui->widChart->setLayout(baseLayout); //顯示到QWidget控件
3. 小結
- 把點集加載到QSplineSeries,QSplineSeries::append函數;
- 把QSplineSeries賦給QChart,QChart::addSeries函數;
- 把QChart給QChartView用於顯示,QChartView構建函數,或QChartView::setChart函數