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)屬性,
并添加條形集合,在條形集合中追加每一個種類對應(yīng)的值
可以添加多個條形集合,若有多個,則每一個種類對應(yīng)的條形就有多個
并設(shè)置條形集合的一些屬性
//創(chuàng)建條形系列 QBarSeries * bar = new QBarSeries(this); bar -> setLabelsVisible(true); //設(shè)置標(biāo)簽可見 bar -> setLabelsFormat("@value%"); //改變每一個條形里面的標(biāo)簽,@value表示每一個條形的y值 //bar->setBarWidth(0.1);//設(shè)置條形的寬度 取值是一個系數(shù),小于0變窄 大于0變寬 //每一個數(shù)據(jù)集可以有多個數(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ù)集,則同一個x處有兩個條形 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%");//改變每一個條形里面的標(biāo)簽 //bar->setBarWidth(0.1);//設(shè)置條形的寬度 取值是一個系數(shù),小于0變窄 大于0變寬 //每一個數(shù)據(jù)集可以有多個數(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ù)集,則同一個x處有兩個條形 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)文章
c++基礎(chǔ)算法動態(tài)DP解決CoinChange問題
這篇文章主要為大家介紹了c++基礎(chǔ)算法如何利用動態(tài)DP來解決Coin Change的問題示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10C語言實現(xiàn)可保存的動態(tài)通訊錄的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C語言實現(xiàn)一個簡單的可保存的動態(tài)通訊錄,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C語言有一定幫助,需要的可以參考一下2022-07-07詳解c++優(yōu)先隊列priority_queue的用法
本文詳細(xì)講解了c++優(yōu)先隊列priority_queue的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12Ubuntu配置sublime text 3的c編譯環(huán)境的具體步驟
下面小編就為大家?guī)硪黄猆buntu配置sublime text 3的c編譯環(huán)境的具體步驟。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03