QT使用QChart繪制柱狀圖
繪制條形(柱狀)圖,系列選擇條形系列QBarSeries
x軸選擇條形圖的種類軸QBarCategoryAxis

1、創(chuàng)建圖表視圖
//1、創(chuàng)建圖表視圖 QChartView * view = new QChartView(this); //開啟抗鋸齒 view -> setRenderHint(QPainter::Antialiasing);
2、創(chuàng)建圖表,并將圖表設(shè)置給視圖,設(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)建X軸(使用條形圖的種類軸QBarCategoryAxis)和Y軸,并添加到圖表中
//構(gòu)建x軸,條形圖使用種類軸
QBarCategoryAxis * axisX = new QBarCategoryAxis(this);
axisX -> append({
"2020",
"2021",
"2022"
}); //添加x軸上的種類刻度
//構(gòu)建y軸,使用數(shù)值軸
QValueAxis * axisY = new QValueAxis(this);
axisY -> setRange(0, 200);
chart -> addAxis(axisX, Qt::AlignBottom);
chart -> addAxis(axisY, Qt::AlignLeft);
4、創(chuàng)建條形系列QBarSeries,設(shè)置其相關(guān)屬性,
并添加條形集合,在條形集合中追加每一個(gè)種類對應(yīng)的值
可以添加多個(gè)條形集合,若有多個(gè),則每一個(gè)種類對應(yīng)的條形就有多個(gè)
并設(shè)置條形集合的一些屬性
//創(chuàng)建條形系列
QBarSeries * bar = new QBarSeries(this);
bar -> setLabelsVisible(true); //設(shè)置標(biāo)簽可見
bar -> setLabelsFormat("@value%"); //改變每一個(gè)條形里面的標(biāo)簽,@value表示每一個(gè)條形的y值
//bar->setBarWidth(0.1);//設(shè)置條形的寬度 取值是一個(gè)系數(shù),小于0變窄 大于0變寬
//每一個(gè)數(shù)據(jù)集可以有多個(gè)數(shù)據(jù)
QBarSet * bs1 = new QBarSet("C語言"); //參數(shù)為圖例
bs1 -> append(20); //對應(yīng)x:2020
bs1 -> append(30); //對應(yīng)x:2021
bs1 -> append(40); //對應(yīng)x:2022
//給條形圖添加數(shù)據(jù)集
bar -> append(bs1);
//添加第二組數(shù)據(jù)集,則同一個(gè)x處有兩個(gè)條形
QBarSet * bs2 = new QBarSet("C++"); //圖例
bs2 -> append(120);
bs2 -> append(130);
bs2 -> append(140);
bar -> append(bs2);
//設(shè)置條形圖的樣式 QBarSet的方法
bs2 -> setBrush(Qt::red); //設(shè)置條形的填充
bs2 -> setLabelColor(Qt::black); //設(shè)置標(biāo)簽的顏色
bs2 -> setBorderColor((Qt::green)); //設(shè)置條形的邊框顏色
bs2 -> setLabel("你好"); //設(shè)置圖例的內(nèi)容
//bs2->setPen();
5、將條形系列QBarSeries添加到圖表中,并和XY軸進(jìn)行關(guān)聯(lián)
//添加系列 chart -> addSeries(bar); //將軸附加到系列 bar -> attachAxis(axisX); bar -> attachAxis(axisY);
完整代碼
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QtCharts>
#include<QHBoxLayout>
#include<QPieSlice>
#include<QPieSeries>
#include<QBarSeries>
#include<QBarSet>
#include<QAreaSeries>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
{
resize(800,600);
QHBoxLayout* h_box=new QHBoxLayout(this);
drawBarPic();
}
~Widget()=default;
//畫條形圖(柱狀圖)
void drawBarPic()
{
//1、創(chuàng)建圖表視圖
QChartView* view=new QChartView(this);
//開啟抗鋸齒
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)顯示)
//構(gòu)建x軸,條形圖使用種類軸
QBarCategoryAxis* axisX=new QBarCategoryAxis(this);
axisX->append({"2020","2021","2022"});//添加x軸上的種類刻度
//構(gòu)建y軸,使用數(shù)值軸
QValueAxis* axisY=new QValueAxis(this);
axisY->setRange(0,200);
chart->addAxis(axisX,Qt::AlignBottom);
chart->addAxis(axisY,Qt::AlignLeft);
//創(chuàng)建條形系列
QBarSeries* bar=new QBarSeries(this);
bar->setLabelsVisible(true);//設(shè)置標(biāo)簽可見
bar->setLabelsFormat("@value%");//改變每一個(gè)條形里面的標(biāo)簽
//bar->setBarWidth(0.1);//設(shè)置條形的寬度 取值是一個(gè)系數(shù),小于0變窄 大于0變寬
//每一個(gè)數(shù)據(jù)集可以有多個(gè)數(shù)據(jù)
QBarSet* bs1=new QBarSet("C語言");//參數(shù)為圖例
bs1->append(20);//對應(yīng)x:2020
bs1->append(30);//對應(yīng)x:2021
bs1->append(40);//對應(yīng)x:2022
//給條形圖添加數(shù)據(jù)集
bar->append(bs1);
//添加第二組數(shù)據(jù)集,則同一個(gè)x處有兩個(gè)條形
QBarSet* bs2=new QBarSet("C++");//圖例
bs2->append(120);
bs2->append(130);
bs2->append(140);
bar->append(bs2);
//設(shè)置條形圖的樣式 QBarSet的方法
bs2->setBrush(Qt::red);//設(shè)置條形的填充
bs2->setLabelColor(Qt::black);//設(shè)置標(biāo)簽的顏色
bs2->setBorderColor((Qt::green));//設(shè)置條形的邊框顏色
bs2->setLabel("你好");//設(shè)置圖例的內(nèi)容
//bs2->setPen();
//添加系列
chart->addSeries(bar);
//將軸附加到系列
bar->attachAxis(axisX);
bar->attachAxis(axisY);
}
};
#endif // WIDGET_H到此這篇關(guān)于QT使用QChart繪制柱狀圖的文章就介紹到這了,更多相關(guān)QT QChart繪制柱狀圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Cocos2d-x 3.x入門教程(二):Node節(jié)點(diǎn)類
這篇文章主要介紹了Cocos2d-x 3.x入門教程(二):Node節(jié)點(diǎn)類,本文對Node節(jié)點(diǎn)類做了一個(gè)簡明講解及Node類提供的函數(shù)做了說明,需要的朋友可以參考下2014-11-11
養(yǎng)成良好的C++編程習(xí)慣之內(nèi)存管理的應(yīng)用詳解
"養(yǎng)成良好的編程習(xí)慣"其實(shí)是相當(dāng)綜合的一個(gè)命題,可以從多個(gè)角度、維度和層次進(jìn)行論述和評(píng)判,如代碼的風(fēng)格、效率和可讀性;模塊設(shè)計(jì)的靈活性、可擴(kuò)展性和耦合度等等,要試圖把所有方面都闡述清楚必須花很多的精力,而且也不一定能闡述得全面2013-05-05
求斐波那契(Fibonacci)數(shù)列通項(xiàng)的七種實(shí)現(xiàn)方法
本篇文章是對求斐波那契(Fibonacci)數(shù)列通項(xiàng)的七種實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
淺析C/C++中動(dòng)態(tài)鏈接庫的創(chuàng)建和調(diào)用
下面小編就為大家?guī)硪黄獪\析C/C++中動(dòng)態(tài)鏈接庫的創(chuàng)建和調(diào)用。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過來看看吧2016-05-05

