QtCharts小知識:如何把曲線顯示到控件上

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. 小結

  1. 把點集加載到QSplineSeries,QSplineSeries::append函數;
  2. 把QSplineSeries賦給QChart,QChart::addSeries函數;
  3. 把QChart給QChartView用於顯示,QChartView構建函數,或QChartView::setChart函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章