#include "mainwindow.h"
#include "ui_mainwindow.h"
// 将添加的widget控件件提升为QChartView类
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
QString strOK = "OK:90%";
float numOK = 0.9;
QString strNG = "NG:10%";
float numNG = 0.1;
printA( strOK, numOK, strNG, numNG);
printB();
printC();
// printD();
printE();
}
MainWindow::~MainWindow()
{
delete ui;
}
// 饼状图A
void MainWindow::printA(QString strOK,float numOK,QString strNG,float numNG)
{
QPieSlice *slice_1 = new QPieSlice(this);
slice_1->setLabel(strOK);
slice_1->setValue(numOK);
slice_1->setLabelVisible(true);
slice_1->setColor(QColor(0,255,0,255)); //设置颜色
QPieSlice *slice_2 = new QPieSlice( this);
slice_2->setLabel(strNG);
slice_2->setValue(numNG);
slice_2->setLabelVisible(true);
slice_2->setColor(QColor(255,0,0,255)); //设置颜色
// 将两个饼状分区加入series
QPieSeries *series = new QPieSeries(this);
series->append(slice_1);
series->append(slice_2);
// 创建Chart画布
QChart *chart = new QChart();
chart->addSeries(series);
// chart->setAnimationOptions(QChart::AllAnimations); // 设置显示时的动画效果-拉跨
chart->setTitle(u8"生产质量状况");
// 将参数设置到画布
ui->graphicsView->setChart(chart);
ui->graphicsView->setRenderHint(QPainter::Antialiasing);
ui->graphicsView->chart()->setTheme(QChart::ChartTheme(0));
}
// 饼状图B
void MainWindow::printB()
{
// 构造数据 [C盘 20%] [D盘 30%] [E盘 50%]
QPieSlice *slice_c = new QPieSlice(QStringLiteral("C"), 0.1, this);
slice_c->setLabelVisible(true);
slice_c->setColor(QColor(255,0,0,200)); //设置颜色
QPieSlice *slice_d = new QPieSlice(QStringLiteral("D"), 0.3, this);
slice_d->setLabelVisible(true);
QPieSlice *slice_e = new QPieSlice(QStringLiteral("E"),0.6,this);
slice_e->setLabelVisible(true);
// 将两个饼状分区加入series
QPieSeries *series = new QPieSeries(this);
series->append(slice_c);
series->append(slice_d);
series->append(slice_e);
// 创建Chart画布
QChart *chart = new QChart();
chart->addSeries(series);
//chart->setAnimationOptions(QChart::AllAnimations); // 设置显示时的动画效果
chart->setTitle(u8"系统磁盘信息");
// 将参数设置到画布
ui->graphicsView_2->setChart(chart);
ui->graphicsView_2->setRenderHint(QPainter::Antialiasing);
// ui->graphicsView_2->chart()->setTheme(QChart::ChartTheme(3)); // 设置不同的主题
}
void MainWindow::printC()
{
QPieSeries *series = new QPieSeries();
series->append("10%", 1); //设置百分百
series->append("20%", 2);
series->append("70%", 7);
series->setLabelsVisible(); //设置标签可见
QPieSlice *slice_red =series->slices().at(0);
QPieSlice *slice_green =series->slices().at(1);
QPieSlice *slice_blue =series->slices().at(2);
slice_red->setColor(QColor(255,0,0,255)); //设置颜色
slice_green->setColor(QColor(0,255,0,255));
slice_blue->setColor(QColor(0,0,255,255));
//新建QChart,将series添加到chart中
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("PieChart Example"); //设置标题
//chart->legend()->hide(); //隐藏图例
// 将参数设置到画布
ui->graphicsView_3->setChart(chart);
ui->graphicsView_3->setRenderHint(QPainter::Antialiasing);
ui->graphicsView_3->chart()->setTheme(QChart::ChartTheme(0));
}
void MainWindow::printD()
{
QPieSeries *series = new QPieSeries();
series->append(u8"OK:30%",3); //添加标签"水果:30%" 和 百分值30%
series->append(u8"NG:70%",7);
series->setLabelsVisible(true);
// series->setUseOpenGL(true);
series->slices().at(0)->setColor(QColor(0,255,0)); //设置颜色
series->slices().at(0)->setLabelColor(QColor(0,255,0));
series->slices().at(1)->setColor(QColor(255,0,0));
series->slices().at(1)->setLabelColor(QColor(255,0,0));
// // 构造数据 [C盘 20%] [D盘 30%] [E盘 50%]
// QPieSlice *slice_c = new QPieSlice(QStringLiteral("C"), 0.1, this);
// slice_c->setLabelVisible(true);
// slice_c->setColor(QColor(255,0,0,200)); //设置颜色
// QPieSlice *slice_d = new QPieSlice(QStringLiteral("D"), 0.3, this);
// slice_d->setLabelVisible(true);
// // 将两个饼状分区加入series
// QPieSeries *series = new QPieSeries(this);
// series->append(slice_c);
// series->append(slice_d);
QChart *m_chart = new QChart();
m_chart->setTheme(QChart::ChartThemeLight);//设置白色主题
m_chart->setDropShadowEnabled(true);//背景阴影
m_chart->addSeries(series);//添加系列到QChart上
m_chart->setTitleBrush(QBrush(QColor(0,0,255)));//设置标题Brush
m_chart->setTitleFont(QFont("微软雅黑"));//设置标题字体
m_chart->setTitle("饼状图!");
//修改说明样式
m_chart->legend()->setVisible(true);
m_chart->legend()->setAlignment(Qt::AlignRight);//底部对齐
m_chart->legend()->setBackgroundVisible(true);//设置背景是否可视
m_chart->legend()->setAutoFillBackground(true);//设置背景自动填充
m_chart->legend()->setColor(QColor(222,233,251));//设置颜色
m_chart->legend()->setLabelColor(QColor(0,100,255));//设置标签颜色
m_chart->legend()->setMaximumHeight(100);
// 将参数设置到画布
ui->graphicsView_4->setChart(m_chart);
ui->graphicsView_4->setRenderHint(QPainter::Antialiasing);
ui->graphicsView_4->chart()->setTheme(QChart::ChartTheme(0));
}
void MainWindow::printE()
{
// 构造数据 [C盘 20%] [D盘 30%] [E盘 50%]
QPieSlice *slice_c = new QPieSlice(QStringLiteral("C"), 0.1, this);
QPieSlice *slice_d = new QPieSlice(QStringLiteral("D"), 0.9, this);
// 将两个饼状分区加入series
QPieSeries *series = new QPieSeries(this);
series->append(slice_c);
series->append(slice_d);
series->setLabelsVisible(true);
series->setUseOpenGL(true);
series->slices().at(0)->setColor(QColor(0,255,0)); //设置颜色
series->slices().at(0)->setLabelColor(QColor(0,255,0));
series->slices().at(1)->setColor(QColor(255,0,0));
series->slices().at(1)->setLabelColor(QColor(255,0,0));
QChart *m_chart = new QChart();
m_chart->setTheme(QChart::ChartThemeLight);//设置白色主题
m_chart->setDropShadowEnabled(true);//背景阴影
m_chart->addSeries(series);//添加系列到QChart上
m_chart->setTitleBrush(QBrush(QColor(0,0,255)));//设置标题Brush
m_chart->setTitleFont(QFont("微软雅黑"));//设置标题字体
m_chart->setTitle("饼状图!");
//修改说明样式
m_chart->legend()->setVisible(true);
m_chart->legend()->setAlignment(Qt::AlignRight);//底部对齐
// m_chart->legend()->setBackgroundVisible(true);//设置背景是否可视
// m_chart->legend()->setAutoFillBackground(true);//设置背景自动填充
// m_chart->legend()->setColor(QColor(160 ,32 ,240));//设置颜色
m_chart->legend()->setLabelColor(QColor(0,0,255));//设置标签颜色
m_chart->legend()->setMaximumHeight(100);
// 将参数设置到画布
ui->graphicsView_4->setChart(m_chart);
ui->graphicsView_4->setRenderHint(QPainter::Antialiasing);
ui->graphicsView_4->chart()->setTheme(QChart::ChartTheme(0));
}
void MainWindow::on_pushButton_clicked()
{
QString strOK = "OK:60%";
float numOK = 0.6;
QString strNG = "NG:40%";
float numNG = 0.4;
printA( strOK, numOK, strNG, numNG);
}
void MainWindow::on_pushButton_2_clicked()
{
QString strOK
qt 自绘漂亮的饼状图-可参考学习
需积分: 0 95 浏览量
2023-01-09
20:35:23
上传
评论
收藏 4KB ZIP 举报
JCIKZR128
- 粉丝: 1
- 资源: 1
最新资源
- Win64OpenSSL-3-3-0.exe
- 课高分程设计-基于C++实现的民航飞行与地图简易管理系统-南京航空航天大学
- 航天器遥测数据故障检测系统python源码+文档说明+数据库(课程设计)
- 北京航空航天大学操作系统课设+ppt+实验报告
- 基于Vue+Echarts实现风力发电机中传感器的数据展示监控可视化系统+源代码+文档说明(高分课程设计)
- 基于单片机的风力发电机转速控制源码
- 基于C++实现的风力发电气动平衡监测系统+源代码+测量数据(高分课程设计)
- 毕业设计- 基于STM32F103C8T6 单片机,物联网技术的太阳能发电装置+源代码+文档说明+架构图+界面截图
- 基于 LSTM(长短期记忆)(即改进的循环神经网络)预测风力发电厂中风力涡轮机产生的功率+源代码+文档说明
- 基于stm32f103+空心杯电机+oled按键+运动算法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈