QChart的顯示需要用到QChartView,創建QChartView的步驟如下:
(1)在.pro文件中添加:QT += charts。
(2)用到QChart的文件中添加:QT_CHARTS_USE_NAMESPACE,或者:using namespace QtCharts;
(3)在ui界面中拖入一個graphicsView(或)控件,然后右擊提升為QChartView類,如下圖,點擊添加,點擊提升;QChart的顯示容器創建完成。
QChart的兩種顯示方法:(本質上就是同一種方法)
(1)QChart必須顯示在widget上,更確切地說,是必須把它顯示在QGraphicView控件中,眾所周知,QT的ui控件都可以作為獨立窗口直接顯示,所以這就是方法1。
(2)把QChart顯示在ui界面的QGraphicView控件中。
PS:把QChart顯示在QGraphicView控件中,程序略顯繁瑣,QT早就為我們封裝好了一個ui控件類QtCharts::QChartView,它繼承了QGraphicView。這就是上文提到的把QGraphicView提升成了QChartView。用QChartView來顯示QChart還是很方便的。
用QGraphicView來顯示QChart較為繁瑣,下面來對比一下,分別用QGraphicView和QChartView來顯示QChart,代碼量的區別:
(1)用QGraphicView來顯示,需要借助QGraphicsScene類。具體地說就是,QGraphicView在最底層,QGraphicsScene在中間,QChart在最外層。
QGraphicsScene scene;//場景(中間層) QGraphicsView view(&scene);//視圖(最底層) view.setRenderHint(QPainter::Antialiasing);//設置視圖抗鋸齒 view.setSceneRect(0, 0, 630, 280);//設置視圖大小 QLineSeries *lineseries = new QLineSeries();//圖表的數據集 lineseries->append(0, 5);//append和<<功能差不多 *lineseries << QPointF(13, 5) << QPointF(17, 6) << QPointF(20, 2); QChart *lineChart = new QChart();//圖表(最頂層) lineChart->addSeries(lineseries); // 將 數據集 添加至圖表中 scene.addItem(lineChart);//把圖標添加到場景中(一個場景中允許添加多個圖表) view.show();//視圖顯示
(2)用QChartView來顯示QChart較為方便
QLineSeries *lineseries = new QLineSeries();//圖表的數據集 lineseries->append(0, 5);//append和<<功能差不多 *lineseries << QPointF(13, 5) << QPointF(17, 6) << QPointF(20, 2); QChart *lineChart = new QChart();//圖表(最頂層) lineChart->addSeries(lineseries); // 將 數據集 添加至圖表中 QChartView *chartView = new QChartView(chart);//QChartView 可以一步到位直接顯示QChart chartView->setRenderHint(QPainter::Antialiasing);//繼承來的抗鋸齒方法 chartView->resize(400, 300); chartView->show();//本示例代碼,把該控件作為窗口直接顯示出來。 //其實,也可以把QChartView的父控件設置為主UI,這樣就能把QChartView顯示在主窗體中了
如果ui中已添加了QChartView,則可以直接在ui中顯示:
...... ui->histogramView->setChart(chart); //histogramView--ui中已添加的QChartView ui->histogramView->setRenderHint(QPainter::Antialiasing); ui->histogramView->setVisible(true);
最后再來捋一下各個類之間的層次關系。下圖中,大括號“{”代表左邊實體包含右邊實體,下箭頭↓↓↓↓代表繼承關系