QT使用QChart繪制面積圖
繪制面積圖,則系列選擇面積系列QAreaSeries
需要給系列設(shè)置上折線和下折線(QLineSeries),如果沒(méi)有設(shè)置下折線,則默認(rèn)x軸為下折線

1、創(chuàng)建圖表視圖
//1、創(chuàng)建圖表視圖 QChartView * view = new QChartView(this); //開(kāi)啟抗鋸齒 view -> setRenderHint(QPainter::Antialiasing);
2、創(chuàng)建圖表,并將圖表設(shè)置給圖表視圖
//2.創(chuàng)建圖表
QChart * chart = new QChart();
//3.將圖表設(shè)置給視圖
view -> setChart(chart);
//設(shè)置標(biāo)題
chart -> setTitle("面積圖");
chart -> legend() -> show(); //顯示或者隱藏圖例(默認(rèn)顯示)
3、創(chuàng)建面積系列(QAreaSeries),
創(chuàng)建上折線和下折線(QLineSeries),并將上下折線設(shè)置給面積系列
設(shè)置面積系列的一些屬性
將系列添加到圖表中
//創(chuàng)建面積系列
QAreaSeries * area = new QAreaSeries(this);
//需要添加圍成面積的下折線和上折線,
//沒(méi)有上折線,不會(huì)顯示;沒(méi)有下折線,默認(rèn)以x軸為下折線
QLineSeries * upper = new QLineSeries(this);
upper -> append(10, 130);
upper -> append(50, 180);
upper -> append(80, 120);
QLineSeries * lower = new QLineSeries(this);
lower -> append(25, 80);
lower -> append(90, 80);
//將上折線和下折線設(shè)置給面積系列
area -> setUpperSeries(upper);
area -> setLowerSeries(lower);
area -> setBrush(Qt::red); //設(shè)置面積圖的顏色
area -> setPointsVisible(true); //設(shè)置點(diǎn)可見(jiàn)
area -> setPointLabelsVisible(true); //設(shè)置點(diǎn)的標(biāo)簽可見(jiàn)
area -> setName("哈哈"); //設(shè)置圖例的內(nèi)容
//將系列添加進(jìn)圖表中
chart -> addSeries(area);4、使用QChart::createDefaultAxes()創(chuàng)建默認(rèn)的x軸和y軸(根據(jù)內(nèi)部的系列)
//使用createDefaultAxes()來(lái)創(chuàng)建軸 //添加系列后可以創(chuàng)建默認(rèn)的坐標(biāo)軸,一定要在addSeries之后調(diào)用,根據(jù)序列來(lái)確定默認(rèn)的坐標(biāo)軸 chart -> createDefaultAxes(); chart -> axes(Qt::Horizontal).at(0) -> setRange(0, 100); chart -> axes(Qt::Vertical).at(0) -> setRange(0, 200);
完整代碼
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QtCharts>
#include<QHBoxLayout>
#include<QAreaSeries>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
{
resize(800,600);
QHBoxLayout* h_box=new QHBoxLayout(this);
drawAreaPic();
}
~Widget()=default;
//畫(huà)面積圖
void drawAreaPic()
{
//1、創(chuàng)建圖表視圖
QChartView* view=new QChartView(this);
//開(kāi)啟抗鋸齒
view->setRenderHint(QPainter::Antialiasing);
this->layout()->addWidget(view);
//2.創(chuàng)建圖表
QChart* chart=new QChart();
//3.將圖表設(shè)置給視圖
view->setChart(chart);
//設(shè)置標(biāo)題
chart->setTitle("面積圖");
chart->legend()->show();//顯示或者隱藏圖例(默認(rèn)顯示)
//創(chuàng)建面積系列
QAreaSeries* area=new QAreaSeries(this);
//需要添加圍成面積的下折線和上折線,
//沒(méi)有上折線,不會(huì)顯示;沒(méi)有下折線,默認(rèn)以x軸為下折線
QLineSeries* upper=new QLineSeries(this);
upper->append(10,130);
upper->append(50,180);
upper->append(80,120);
QLineSeries* lower=new QLineSeries(this);
lower->append(25,80);
lower->append(90,80);
//將上折線和下折線設(shè)置給面積系列
area->setUpperSeries(upper);
area->setLowerSeries(lower);
area->setBrush(Qt::red);//設(shè)置面積圖的顏色
area->setPointsVisible(true);//設(shè)置點(diǎn)可見(jiàn)
area->setPointLabelsVisible(true);//設(shè)置點(diǎn)的標(biāo)簽可見(jiàn)
area->setName("哈哈");//設(shè)置圖例的內(nèi)容
//將系列添加進(jìn)圖表中
chart->addSeries(area);
//使用createDefaultAxes()來(lái)創(chuàng)建軸
//添加系列后可以創(chuàng)建默認(rèn)的坐標(biāo)軸,一定要在addSeries之后調(diào)用,根據(jù)序列來(lái)確定默認(rèn)的坐標(biāo)軸
chart->createDefaultAxes();
chart->axes(Qt::Horizontal).at(0)->setRange(0,100);
chart->axes(Qt::Vertical).at(0)->setRange(0,200);
}
};
#endif // WIDGET_H到此這篇關(guān)于QT使用QChart繪制面積圖的文章就介紹到這了,更多相關(guān)QT QChart繪制面積圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
簡(jiǎn)述C語(yǔ)言中system()函數(shù)與vfork()函數(shù)的使用方法
這篇文章主要介紹了簡(jiǎn)述C語(yǔ)言中system()函數(shù)與vfork()函數(shù)的使用方法,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08
C++讀取WAV音頻文件的頭部數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要介紹了C++讀取WAV音頻文件的頭部數(shù)據(jù)的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的方法,需要的朋友可以參考下2017-10-10
C++基于遞歸和非遞歸算法判定兩個(gè)二叉樹(shù)結(jié)構(gòu)是否完全相同(結(jié)構(gòu)和數(shù)據(jù)都相同)
這篇文章主要介紹了C++基于遞歸和非遞歸算法判定兩個(gè)二叉樹(shù)結(jié)構(gòu)是否完全相同,若判斷二叉樹(shù)的結(jié)構(gòu)和數(shù)據(jù)都相同則為完全相同.涉及C++二叉樹(shù)的創(chuàng)建、遍歷、比較等相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)哈希表詳解
哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過(guò)把關(guān)鍵碼映射的位置去尋找存放值的地方,說(shuō)起來(lái)可能感覺(jué)有點(diǎn)復(fù)雜,我想我舉個(gè)例子你就會(huì)明白了,最典型的的例子就是字典2022-02-02
利用C語(yǔ)言實(shí)現(xiàn)經(jīng)典游戲斗獸棋
《斗獸棋》是一款棋類游戲,整個(gè)游戲畫(huà)面是分為兩塊區(qū)域,中間有河流分割兩塊區(qū)域,有橋梁可以讓彼此的動(dòng)物過(guò)河,要取得勝利,必須占領(lǐng)那一邊動(dòng)物的巢穴獲勝利。本文將用C語(yǔ)言實(shí)現(xiàn)這一游戲,需要的可以參考一下2022-03-03
C語(yǔ)言實(shí)踐設(shè)計(jì)開(kāi)發(fā)飛機(jī)游戲
飛機(jī)大戰(zhàn)想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂(lè)的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何利用C語(yǔ)言寫一個(gè)簡(jiǎn)單的飛機(jī)大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下2022-02-02

