欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

QT使用QChart繪制餅圖

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

餅圖沒有坐標軸,也不需要坐標軸

使用的系列是QPieSeries

餅圖里面一個一個的塊稱為切片

舉例:

繪制一個餅圖,點擊對應切片可以讓切片分離

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

//1、創(chuàng)建圖表視圖
QChartView * view = new QChartView(this);
//開啟抗鋸齒
view -> setRenderHint(QPainter::Antialiasing);

2、創(chuàng)建圖表并將圖表設置給圖表視圖

//2.創(chuàng)建圖表
QChart * chart = new QChart();
 
//3.將圖表設置給視圖
view -> setChart(chart);
 
//設置標題
chart -> setTitle("餅圖");
chart -> legend() -> show(); //顯示或者隱藏圖例(默認顯示)

3、創(chuàng)建餅圖系列,并給系列添加切片,并設置切片的相關屬性,并綁定餅圖系列的信號

//創(chuàng)建系列,餅圖沒有坐標軸
QPieSeries * pie = new QPieSeries(this);
//添加切片
//參數1:對應的圖例名和標簽名(標簽默認不顯示)
//參數2:占據的數值
QPieSlice * ps1 = new QPieSlice("C語言", 40, this);
pie -> append(ps1);
QPieSlice * ps2 = new QPieSlice("C++", 30, this);
pie -> append(ps2);
 
//也可以直接在append中指定
pie -> append("JAVA", 25);
pie -> append("C#", 5);
 
//設置中間圓孔的大小,值不能超過1
pie -> setHoleSize(0.2);
 
//獲取餅圖的切片
//并設置切片的屬性
auto p1 = pie -> slices().at(0);
 
//獲取切片占的百分比,是一個小數
auto per = p1 -> percentage();
 
//設置切片的標簽提示
p1 -> setLabel("c語言占" + QString::number(per * 100) + "%");
p1 -> setLabelVisible(true);
 
//p1->setPen()//設置畫筆,改變輪廓
p1 -> setBrush(Qt::red); //改變填充
 
//點擊信號,某個切片被點擊了就會發(fā)出信號,信號參數告訴了是哪一個切片被點擊了
connect(pie, & QPieSeries::clicked, this, [ = ](QPieSlice * p) {
    //將被點擊的切片和餅圖分離
    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;
 
    //畫餅圖
    void drawPiePic()
    {
        //1、創(chuàng)建圖表視圖
        QChartView* view=new QChartView(this);
        //開啟抗鋸齒
        view->setRenderHint(QPainter::Antialiasing);
 
        this->layout()->addWidget(view);
 
        //2.創(chuàng)建圖表
        QChart* chart=new QChart();
 
        //3.將圖表設置給視圖
        view->setChart(chart);
 
 
        //設置標題
        chart->setTitle("餅圖");
        chart->legend()->show();//顯示或者隱藏圖例(默認顯示)
 
        //創(chuàng)建系列,餅圖沒有坐標軸
        QPieSeries* pie=new QPieSeries(this);
        //添加切片
        //參數1:對應的圖例名和標簽名(標簽默認不顯示)
        //參數2:占據的數值
        QPieSlice* ps1=new QPieSlice("C語言",40,this);
        pie->append(ps1);
        QPieSlice* ps2=new QPieSlice("C++",30,this);
        pie->append(ps2);
 
        //也可以直接在append中指定
        pie->append("JAVA",25);
        pie->append("C#",5);
 
        //設置中間圓孔的大小,值不能超過1
        pie->setHoleSize(0.2);
 
        //獲取餅圖的切片
        //并設置切片的屬性
        auto p1=pie->slices().at(0);
 
        //獲取切片占的百分比,是一個小數
        auto per=p1->percentage();
 
        //設置切片的標簽提示
        p1->setLabel("c語言占"+QString::number(per*100)+"%");
        p1->setLabelVisible(true);
 
        //p1->setPen()//設置畫筆,改變輪廓
        p1->setBrush(Qt::red);//改變填充
 
        //點擊信號,某個切片被點擊了就會發(fā)出信號,信號參數告訴了是哪一個切片被點擊了
        connect(pie,&QPieSeries::clicked,this,[=](QPieSlice* p){
            //將被點擊的切片和餅圖分離
            if(p->isExploded())
            {
                p->setExploded(false);
            }
            else
            {
                p->setExploded(true);
            }
 
        });
 
        //添加系列
        chart->addSeries(pie);
 
    }
 
 
};
#endif // WIDGET_H

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

相關文章

  • VS2010/MFC編程(常用控件:樹形控件Tree Control控件創(chuàng)建h和實例)

    VS2010/MFC編程(常用控件:樹形控件Tree Control控件創(chuàng)建h和實例)

    本篇文章介紹了VS2010/MFC編程:常用控件:樹形控件Tree Control,包括樹形控件的創(chuàng)建、CTreeCtrl類的主要成員函數和應用實例有興趣的可以了解一下。
    2016-12-12
  • C++初學者之根據輸入的任何一個正整數,輸出可能被表示的連續(xù)正整數

    C++初學者之根據輸入的任何一個正整數,輸出可能被表示的連續(xù)正整數

    這篇文章主要介紹了C++初學者之根據輸入的任何一個正整數,輸出可能被表示的連續(xù)正整數的相關資料,需要的朋友可以參考下
    2016-03-03
  • 詳解C++中的左值,純右值和將亡值

    詳解C++中的左值,純右值和將亡值

    C++中本身是存在左值,右值的概念,但是在C11中又出現了左值,純右值,將亡值得概念;這里我們主要介紹這些值的概念,感興趣的可以了解一下
    2022-09-09
  • c++實現簡單隨機數的代碼

    c++實現簡單隨機數的代碼

    在本篇文章里小編給大家整理的是一篇關于c++實現簡單隨機數的代碼內容,有需要的朋友們可以跟著學習下。
    2021-05-05
  • 詳解C語言數據結構之棧

    詳解C語言數據結構之棧

    這篇文章主要為大家介紹了C語言數據結構之棧,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 深入淺出理解C語言指針的綜合應用

    深入淺出理解C語言指針的綜合應用

    指針是指向另一個變量的變量。意思是一個指針保存的是另一個變量的內存地址。換句話說,指針保存的并不是普通意義上的數值,而是另一個變量的地址值。一個指針保存了另一個變量的地址值,就說這個指針“指向”了那個變量
    2022-02-02
  • C語言實現乒乓球比賽

    C語言實現乒乓球比賽

    這篇文章主要為大家詳細介紹了C語言實現乒乓球比賽,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • windows下vscode環(huán)境c++利用matplotlibcpp繪圖

    windows下vscode環(huán)境c++利用matplotlibcpp繪圖

    本文主要介紹了windows下vscode環(huán)境c++利用matplotlibcpp繪圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • C語言 函數缺省參數詳情

    C語言 函數缺省參數詳情

    這篇文章主要介紹了C語言 的函數缺省參數、除了介紹函數全缺省參數,和半缺省參數還簡單介紹了函數聲明、函數調用等一些函數的定義,需要的朋友可以參考下面文章內容
    2021-09-09
  • C/C++ 多線程的學習心得總結

    C/C++ 多線程的學習心得總結

    本篇文章是對C/C++中多線程的學習心得總結進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論