Qt QChart 創(chuàng)建圖表的實(shí)現(xiàn)方法
本文主要介紹了Qt QChart 創(chuàng)建圖表,分享給大家,也給自己留個(gè)筆記,廢話不多說(shuō),具體如下:
效果

流程

代碼
1. 餅圖
// 保存多個(gè)扇形
QList<QPieSlice *> slices;
for (int i = 1; i <= 10; ++i)
{
// 創(chuàng)建一個(gè)扇形
QPieSlice * slice = new QPieSlice(QString::number(i),i);
slices << slice;
}
// 創(chuàng)建一個(gè)餅圖系列
QPieSeries * pieSeries = new QPieSeries;
// 當(dāng)鼠標(biāo)懸浮時(shí)設(shè)置標(biāo)簽可見(jiàn),設(shè)置餅圖扇形分離
QObject::connect(pieSeries,&QPieSeries::hovered
, [](QPieSlice *slice, bool state) {
slice->setLabelVisible(state);
slice->setExploded(state);
});
// 將所有扇形所加到餅圖中
pieSeries->append(slices);
// 創(chuàng)建一個(gè)圖表
QChart * chart = new QChart;
// 設(shè)置標(biāo)題
chart->setTitle(QStringLiteral("餅圖"));
// 設(shè)置動(dòng)畫
chart->setAnimationOptions(QChart::AllAnimations);
// 設(shè)置圖表的系列
chart->addSeries(pieSeries);
// 創(chuàng)建圖表視圖,顯示圖表
pView = new QChartView(chart);
// 設(shè)置抗鋸齒
pView->setRenderHint(QPainter::Antialiasing);
// 添加圖表視圖到布局
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(pView);
2. 柱圖
// 保存柱集合
QList<QBarSet *> sets;
for (int i = 1; i <= 5; ++i)
{
// 創(chuàng)建一個(gè)柱集合
QBarSet * set = new QBarSet(QString("set").append(QString::number(i)));
QList<qreal> values;
for (int j = 1; j <= 5; ++j)
{
values << qrand()%100;
qDebug() << values;
}
set->append(values);
sets << set;
}
// 創(chuàng)建一個(gè)柱圖系列
QBarSeries * barSeries = new QBarSeries;
// 添加柱集合
barSeries->append(sets);
QChart * chart = new QChart;
chart->setTitle(QStringLiteral("柱狀圖"));
chart->setAnimationOptions(QChart::AllAnimations);
chart->addSeries(barSeries);
pView = new QChartView(chart);
pView->setRenderHint(QPainter::Antialiasing);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(pView);
3. 折/曲線圖
// 創(chuàng)建并保存點(diǎn)信息
QList<QPointF> points;
points << QPointF(0, -1) << QPointF(2, 2) << QPointF(3, 5) << QPointF(5, -5)
<< QPointF(6, 0) << QPointF(7, 3);
// 創(chuàng)建線圖系列
QLineSeries * lineSeries = new QLineSeries;
// 曲線
//QSplineSeries * lineSeries = new QSplineSeries;
// 追加點(diǎn)
lineSeries->append(points);
QChart * chart = new QChart;
chart->setTitle(QStringLiteral("線圖"));
chart->setAnimationOptions(QChart::AllAnimations);
chart->addSeries(lineSeries);
pView = new QChartView(chart);
pView->setRenderHint(QPainter::Antialiasing);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(pView);
4. 區(qū)域圖
QList<QPointF> pointsLower;
pointsLower << QPointF(0, -1) << QPointF(2, 2) << QPointF(3, 5) << QPointF(5, -5)
<< QPointF(6, 0) << QPointF(7, 3);
// 創(chuàng)建一條線
QLineSeries * lineSeriesLower = new QLineSeries;
lineSeriesLower->append(pointsLower);
QList<QPointF> pointsUpper;
pointsUpper << QPointF(0, -1) << QPointF(2, 4) << QPointF(3, 3) << QPointF(5, 3)
<< QPointF(6, 1) << QPointF(7, 5);
// 創(chuàng)建另一條線
QLineSeries * lineSeriesUpper = new QLineSeries;
lineSeriesUpper->append(pointsUpper);
// 兩條線組成面
QAreaSeries * areaSeries = new QAreaSeries(lineSeriesLower, lineSeriesUpper);
QChart * chart = new QChart;
chart->setTitle(QStringLiteral("區(qū)域圖"));
chart->setAnimationOptions(QChart::AllAnimations);
chart->addSeries(areaSeries);
pView = new QChartView(chart);
pView->setRenderHint(QPainter::Antialiasing);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(pView);
到此這篇關(guān)于Qt QChart 創(chuàng)建圖表的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Qt QChart 創(chuàng)建圖表 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于PyQt5制作一個(gè)數(shù)據(jù)圖表生成器
- Qt繪制圖表的實(shí)現(xiàn)
- Qt圖形圖像開發(fā)之曲線圖表模塊QChart庫(kù)一個(gè)chart中顯示兩條曲線詳細(xì)方法與實(shí)例
- Qt圖形圖像開發(fā)之曲線圖表模塊QChart庫(kù)坐標(biāo)軸和數(shù)據(jù)不對(duì)應(yīng)、密集的散點(diǎn)圖無(wú)法顯示問(wèn)題解決方法
- Qt圖形圖像開發(fā)曲線圖表模塊QChart庫(kù)縮放/平移詳細(xì)方法與實(shí)例
- Qt圖形圖像開發(fā)之曲線圖表模塊QChart庫(kù)讀取/設(shè)置X軸的顯示區(qū)間
- Qt圖形圖像開發(fā)曲線圖表模塊QChart庫(kù)基本用法、各個(gè)類之間的關(guān)系說(shuō)明
- Qt圖形圖像開發(fā)之曲線圖表庫(kù)QChart編譯安裝詳細(xì)方法與使用實(shí)例
- Qt實(shí)現(xiàn)簡(jiǎn)單折線圖表
相關(guān)文章
C語(yǔ)言 動(dòng)態(tài)分配數(shù)組案例詳解
這篇文章主要介紹了C語(yǔ)言 動(dòng)態(tài)分配數(shù)組案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
淺析VSCode launch.json中的各種替換變量的意思 ${workspaceFolder} ${file} $
這篇文章主要介紹了VSCode launch.json中的各種替換變量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
C語(yǔ)言中的自定義類型之結(jié)構(gòu)體與枚舉和聯(lián)合詳解
今天我們來(lái)學(xué)習(xí)一下自定義類型,自定義類型包括結(jié)構(gòu)體、枚舉、聯(lián)合體,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考2022-06-06
數(shù)據(jù)結(jié)構(gòu) 棧的操作實(shí)例詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 順序棧的定義、初始化、空棧判斷、入棧、出棧操作的相關(guān)資料,需要的朋友可以參考下2017-06-06
實(shí)戰(zhàn)開發(fā)為單片機(jī)的按鍵加一個(gè)鎖防止多次觸發(fā)的細(xì)節(jié)
今天小編就為大家分享一篇關(guān)于實(shí)戰(zhàn)開發(fā)為單片機(jī)的按鍵加一個(gè)鎖防止多次觸發(fā)的細(xì)節(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
C++實(shí)現(xiàn)基于reactor的百萬(wàn)級(jí)并發(fā)服務(wù)器
本文介紹了基于Reactor模式的百萬(wàn)級(jí)并發(fā)服務(wù)器,使用epoll進(jìn)行高效I/O多路復(fù)用,支持多個(gè)端口的監(jiān)聽,并通過(guò)回調(diào)機(jī)制處理每個(gè)連接的接收和發(fā)送操作,需要的朋友可以參考下2025-02-02
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷程序
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
C語(yǔ)言常用庫(kù)函數(shù)的使用及模擬實(shí)現(xiàn)詳解例舉
C語(yǔ)言庫(kù)函數(shù)是把自定義函數(shù)放到庫(kù)里,是別人把一些常用到的函數(shù)編完放到一個(gè)文件里,供程序員使用,下面讓我們一起來(lái)詳細(xì)了解它2022-04-04
C++替換棧中和.data中的cookie實(shí)現(xiàn)步驟詳解
這篇文章主要介紹了C++替換棧中和.data中的cookie實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10

