最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT使用QChart繪制餅圖

 更新時(shí)間:2024年11月19日 11:26:00   作者:姆路  
在Qt中使用QChart類(lèi)可以快速繪制一個(gè)圖表出來(lái),比如折線圖、餅圖、柱狀圖等,本文就來(lái)為大家介紹一下如何利用QChart繪制簡(jiǎn)單的餅圖吧

餅圖沒(méi)有坐標(biāo)軸,也不需要坐標(biāo)軸

使用的系列是QPieSeries

餅圖里面一個(gè)一個(gè)的塊稱(chēng)為切片

舉例:

繪制一個(gè)餅圖,點(diǎn)擊對(duì)應(yīng)切片可以讓切片分離

1、創(chuàng)建圖表視圖并開(kāi)啟抗鋸齒

//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)建餅圖系列,并給系列添加切片,并設(shè)置切片的相關(guān)屬性,并綁定餅圖系列的信號(hào)

//創(chuàng)建系列,餅圖沒(méi)有坐標(biāo)軸
QPieSeries * pie = new QPieSeries(this);
//添加切片
//參數(shù)1:對(duì)應(yīng)的圖例名和標(biāo)簽名(標(biāo)簽?zāi)J(rèn)不顯示)
//參數(shù)2:占據(jù)的數(shù)值
QPieSlice * ps1 = new QPieSlice("C語(yǔ)言", 40, this);
pie -> append(ps1);
QPieSlice * ps2 = new QPieSlice("C++", 30, this);
pie -> append(ps2);
 
//也可以直接在append中指定
pie -> append("JAVA", 25);
pie -> append("C#", 5);
 
//設(shè)置中間圓孔的大小,值不能超過(guò)1
pie -> setHoleSize(0.2);
 
//獲取餅圖的切片
//并設(shè)置切片的屬性
auto p1 = pie -> slices().at(0);
 
//獲取切片占的百分比,是一個(gè)小數(shù)
auto per = p1 -> percentage();
 
//設(shè)置切片的標(biāo)簽提示
p1 -> setLabel("c語(yǔ)言占" + QString::number(per * 100) + "%");
p1 -> setLabelVisible(true);
 
//p1->setPen()//設(shè)置畫(huà)筆,改變輪廓
p1 -> setBrush(Qt::red); //改變填充
 
//點(diǎn)擊信號(hào),某個(gè)切片被點(diǎn)擊了就會(huì)發(fā)出信號(hào),信號(hào)參數(shù)告訴了是哪一個(gè)切片被點(diǎn)擊了
connect(pie, & QPieSeries::clicked, this, [ = ](QPieSlice * p) {
    //將被點(diǎn)擊的切片和餅圖分離
    if (p -> isExploded()) {
        p -> setExploded(false);
    } else {
        p -> setExploded(true);
    }
 
});

4、將系列添加到圖表中

//添加系列
chart->addSeries(pie);

完整代碼:

#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);
        
        drawPiePic();
 
    }
    ~Widget()=default;
 
    //畫(huà)餅圖
    void drawPiePic()
    {
        //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)建系列,餅圖沒(méi)有坐標(biāo)軸
        QPieSeries* pie=new QPieSeries(this);
        //添加切片
        //參數(shù)1:對(duì)應(yīng)的圖例名和標(biāo)簽名(標(biāo)簽?zāi)J(rèn)不顯示)
        //參數(shù)2:占據(jù)的數(shù)值
        QPieSlice* ps1=new QPieSlice("C語(yǔ)言",40,this);
        pie->append(ps1);
        QPieSlice* ps2=new QPieSlice("C++",30,this);
        pie->append(ps2);
 
        //也可以直接在append中指定
        pie->append("JAVA",25);
        pie->append("C#",5);
 
        //設(shè)置中間圓孔的大小,值不能超過(guò)1
        pie->setHoleSize(0.2);
 
        //獲取餅圖的切片
        //并設(shè)置切片的屬性
        auto p1=pie->slices().at(0);
 
        //獲取切片占的百分比,是一個(gè)小數(shù)
        auto per=p1->percentage();
 
        //設(shè)置切片的標(biāo)簽提示
        p1->setLabel("c語(yǔ)言占"+QString::number(per*100)+"%");
        p1->setLabelVisible(true);
 
        //p1->setPen()//設(shè)置畫(huà)筆,改變輪廓
        p1->setBrush(Qt::red);//改變填充
 
        //點(diǎn)擊信號(hào),某個(gè)切片被點(diǎn)擊了就會(huì)發(fā)出信號(hào),信號(hào)參數(shù)告訴了是哪一個(gè)切片被點(diǎn)擊了
        connect(pie,&QPieSeries::clicked,this,[=](QPieSlice* p){
            //將被點(diǎn)擊的切片和餅圖分離
            if(p->isExploded())
            {
                p->setExploded(false);
            }
            else
            {
                p->setExploded(true);
            }
 
        });
 
        //添加系列
        chart->addSeries(pie);
 
    }
 
 
};
#endif // WIDGET_H

到此這篇關(guān)于QT使用QChart繪制餅圖的文章就介紹到這了,更多相關(guān)QT QChart繪制餅圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中范圍(Ranges)與視圖(Views)的常見(jiàn)問(wèn)題、易錯(cuò)點(diǎn)

    C++中范圍(Ranges)與視圖(Views)的常見(jiàn)問(wèn)題、易錯(cuò)點(diǎn)

    ranges和views是C20引入的重要特性,它們讓代碼更加簡(jiǎn)潔、高效且富有表達(dá)力,通過(guò)理解其基本概念、注意常見(jiàn)的陷阱,并合理應(yīng)用高級(jí)技巧,開(kāi)發(fā)者可以充分利用這些新特性,提升軟件質(zhì)量和開(kāi)發(fā)效率,,本文將深入淺出地探討ranges與views的基礎(chǔ)概念、常見(jiàn)問(wèn)題、易錯(cuò)點(diǎn)及避免策略
    2024-06-06
  • 五個(gè)嵌入式C語(yǔ)言中的實(shí)用技巧分享

    五個(gè)嵌入式C語(yǔ)言中的實(shí)用技巧分享

    這篇文章主要和大家分享一下五個(gè)嵌入式C語(yǔ)言中的實(shí)用技巧,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定的幫助,需要的可以參考一下
    2022-12-12
  • C++實(shí)現(xiàn)洗牌發(fā)牌排序功能的示例代碼

    C++實(shí)現(xiàn)洗牌發(fā)牌排序功能的示例代碼

    本篇文章主要介紹了C++實(shí)現(xiàn)洗牌發(fā)牌排序功能的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • C++string字符串拼接遇到的問(wèn)題及解決

    C++string字符串拼接遇到的問(wèn)題及解決

    這篇文章主要介紹了C++string字符串拼接遇到的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C語(yǔ)言超細(xì)致講解循環(huán)語(yǔ)句

    C語(yǔ)言超細(xì)致講解循環(huán)語(yǔ)句

    我們說(shuō)到當(dāng)滿足特定條件時(shí),就會(huì)執(zhí)行if語(yǔ)句或者switch語(yǔ)句后面的語(yǔ)句,否則不執(zhí)行,但是這只能執(zhí)行一次,在日常生活中,有些事情是需要重復(fù)去做的,C語(yǔ)句就為此引入了循環(huán)語(yǔ)句。所以今天繼續(xù)為大家分享C語(yǔ)言循環(huán)家族
    2022-05-05
  • C++淺析虛函數(shù)使用方法

    C++淺析虛函數(shù)使用方法

    對(duì)C++了解的人都應(yīng)該知道虛函數(shù)(Virtual Function)是通過(guò)一張?zhí)摵瘮?shù)表(Virtual Table)來(lái)實(shí)現(xiàn)的。簡(jiǎn)稱(chēng)為V-Table。本文就將詳細(xì)講講虛函數(shù)表的原理與使用,需要的可以參考一下
    2022-08-08
  • 一篇文章帶你了解C語(yǔ)言的選擇結(jié)構(gòu)

    一篇文章帶你了解C語(yǔ)言的選擇結(jié)構(gòu)

    這篇文章主要為大家介紹了C語(yǔ)言的選擇結(jié)構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • C語(yǔ)言深入講解函數(shù)參數(shù)的使用

    C語(yǔ)言深入講解函數(shù)參數(shù)的使用

    函數(shù)的參數(shù)分為形參和實(shí)參兩種。形參出現(xiàn)在函數(shù)定義中,在整個(gè)函數(shù)體內(nèi)都可以使用,離開(kāi)該函數(shù)則不能使用。實(shí)參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實(shí)參變量也不能使用
    2022-04-04
  • exit和atexit的區(qū)別詳細(xì)解析

    exit和atexit的區(qū)別詳細(xì)解析

    以下是對(duì)exit與atexit的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • C語(yǔ)言中關(guān)于樹(shù)和二叉樹(shù)的相關(guān)概念

    C語(yǔ)言中關(guān)于樹(shù)和二叉樹(shù)的相關(guān)概念

    這篇文章主要介紹了Java?數(shù)據(jù)結(jié)構(gòu)之樹(shù)和二叉樹(shù)相關(guān)資料,文中通過(guò)示例代碼和一些相關(guān)題目來(lái)做介紹,非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

巍山| 和平区| 合阳县| 鹰潭市| 江山市| 同德县| 永年县| 宣恩县| 庄浪县| 清徐县| 鸡泽县| 灵台县| 容城县| 和田市| 西吉县| 阿荣旗| 丽江市| 高安市| 高尔夫| 丰都县| 扬中市| 罗城| 平顶山市| 九龙坡区| 常山县| 特克斯县| 牟定县| 镇平县| 邯郸县| 平顶山市| 叶城县| 马关县| 乐亭县| 高密市| 龙口市| 六枝特区| 丘北县| 丰宁| 抚顺县| 石门县| 黔西县|