首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

QT封装的弧形进度条组件

移动开发 4.46KB 13 需要积分: 1
立即下载

资源介绍:

在可视化应用中,弧形进度条应用也比较广泛,本示例封装了一个可复用、个性化的弧形进度条组件。示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
#include "progressarc.h" #include #include struct ProgressArcPrivate{ double minValue = 0; double maxValue = 100; double value = 0; double startAngle = -90; double endAngle = 270; QColor arcColor = QColor(QLatin1String("#4da1ff")); QColor textColor = QColor(QLatin1String("#4da1ff")); QColor titleColor = QColor(80, 80, 80); QColor baseColor = QColor(179,179,179); QColor backgroundColor = Qt::transparent; bool percent = true; QString title; QPropertyAnimation *animation; }; ProgressArc::ProgressArc(const QString &title, QWidget *parent) : QWidget(parent) , d(new ProgressArcPrivate) { setTitle(title); d->animation = new QPropertyAnimation(this, "value", this); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); connect(this, &ProgressArc::valueChanged, this, &ProgressArc::onStartAnimation); } ProgressArc::~ProgressArc() { } void ProgressArc::setTitle(const QString &title) { d->title = title; update(); } QString ProgressArc::title() const { return d->title; } void ProgressArc::setPercent(const bool percent) { d->percent = percent; update(); } bool ProgressArc::percent() const { return d->percent; } void ProgressArc::setMin(const double min) { d->minValue = min; update(); } double ProgressArc::min() const { return d->minValue; } void ProgressArc::setmax(const double max) { d->maxValue = max; update(); } double ProgressArc::max() const { return d->maxValue; } void ProgressArc::setStartAngle(const double startAngle) { d->startAngle = startAngle; update(); } double ProgressArc::startAngle() const { return d->startAngle; } void ProgressArc::setEndAngle(const double endAngle) { d->endAngle = endAngle; update(); } double ProgressArc::endAngle() const { return d->endAngle; } void ProgressArc::setArcColor(const QColor &color) { d->arcColor = color; update(); } QColor ProgressArc::arcColor() const { return d->arcColor; } void ProgressArc::setTextColor(const QColor &color) { d->textColor = color; update(); } QColor ProgressArc::textColor() const { return d->textColor; } void ProgressArc::setTitleColor(const QColor &color) { d->titleColor = color; update(); } QColor ProgressArc::titleColor() const { return d->titleColor; } void ProgressArc::setBaseColor(const QColor &color) { d->baseColor = color; update(); } QColor ProgressArc::baseColor() const { return d->baseColor; } void ProgressArc::setBackgroundColor(const QColor &color) { d->backgroundColor = color; update(); } QColor ProgressArc::backgroundColor() const { return d->backgroundColor; } QSize ProgressArc::sizeHint() const { return QSize(200, 200); } QSize ProgressArc::minimumSizeHint() const { return QSize(80, 80); } void ProgressArc::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); // 背景 if (d->backgroundColor != Qt::transparent) { painter.setPen(Qt::NoPen); painter.fillRect(rect(), d->backgroundColor); } // 平移中心 painter.translate(width() / 2, height() / 2); // 圆弧 drawArc(&painter); // text drawText(&painter); } void ProgressArc::onStartAnimation(const double value) { if(value < d->minValue || value > d->maxValue || value == d->value) return; int start = d->value; int end = value; d->animation->setStartValue(start); d->animation->setEndValue(end); d->animation->start(); } double ProgressArc::value() const { return d->value; } void ProgressArc::setValue(const double value) { d->value = value; update(); } void ProgressArc::drawArc(QPainter *painter) { double min = qMin(width(), height()); double arcWidth = min / 10.0; double radius = min / 2.0 - arcWidth - 5; QRectF rect = QRectF(-radius, -radius, radius * 2, radius * 2); QPen pen; pen.setWidthF(arcWidth); pen.setCapStyle(Qt::RoundCap); // 圆弧背景 double angle = d->endAngle - d->startAngle; pen.setColor(d->baseColor); painter->setPen(pen); painter->drawArc(rect, d->startAngle * 16, angle * 16); // 圆弧进度 double spanAngle = angle * ((d->value - d->minValue) / (d->maxValue - d->minValue)); double startAngle = d->endAngle - spanAngle; pen.setColor(d->arcColor); painter->setPen(pen); painter->drawArc(rect, startAngle * 16, spanAngle * 16); } void ProgressArc::drawText(QPainter *painter) { double min = qMin(width(), height()); double arcWidth = min / 10.0; double radius = min / 2.0 - arcWidth - 5; painter->setPen(d->textColor); QFont font("Microsoft YaHei", radius / 4.0); painter->setFont(font); QString strValue; if (d->percent) { double temp = d->value / (d->maxValue - d->minValue) * 100; strValue = QString("%1%").arg(temp, 0, 'f', 2); } else strValue = QString("%1").arg(d->value, 0, 'f', 2); // value QRectF valueRect(-radius, 0, radius * 2, radius / 3); painter->drawText(valueRect, Qt::AlignCenter, strValue); painter->setPen(d->titleColor); font.setPixelSize(radius / 4.0); painter->setFont(font); // title QRectF textRect(-radius, -radius / 2.5, radius * 2, radius / 3); painter->drawText(textRect, Qt::AlignCenter, d->title); }

资源文件列表:

ProgressArc.zip 大约有7个文件
  1. ProgressArc/
  2. ProgressArc/main.cpp 175B
  3. ProgressArc/mainwindow.cpp 1.23KB
  4. ProgressArc/mainwindow.h 220B
  5. ProgressArc/progressarc.cpp 5.42KB
  6. ProgressArc/progressarc.h 2.34KB
  7. ProgressArc/ProgressArc.pro 1.04KB
0评论
提交 加载更多评论
其他资源 在线拍卖系统2024(代码+论文+ppt)
CSDN展示地址: http://t.csdnimg.cn/28rdv
STM32学习-IIC
STM32学习-IIC
数据库原理实验一、实验1 认识DBMS二、实验2 简单SQL查询三、实验3 高级SQL查询四、实验4 数据的更新
一、实验1 认识DBMS 二、实验2 简单SQL查询 三、实验3 高级SQL查询 四、实验4 数据的更新 五、实验总结
数据库原理实验一、实验1 认识DBMS二、实验2 简单SQL查询三、实验3 高级SQL查询四、实验4 数据的更新 数据库原理实验一、实验1 认识DBMS二、实验2 简单SQL查询三、实验3 高级SQL查询四、实验4 数据的更新 数据库原理实验一、实验1 认识DBMS二、实验2 简单SQL查询三、实验3 高级SQL查询四、实验4 数据的更新
GoGoGo-1.12.1.zip
GoGoGo-1.12.1.zip
GoGoGo-1.12.1.zip
HTML+CSS实现快速3D效果,六个案例源码分享 3D球体、正方体+鼠标渐入渐出效果、贴图正方体、球体相册、行星环绕相册
【HTML+CSS】实现快速3D效果,六个案例源码分享。3D球体、正方体+鼠标渐入渐出效果、贴图正方体、球体相册、行星环绕相册。使用于刚开始学习前端的人群,在不使用js的前提下就实现3D效果。代码简洁易懂,初级开发者利器。源码是开源的,任何人都可以借鉴。
使用Quartus ii和Verilog语言构建一个32位CPU并实现FPGA单片机流水灯
Quartus II 是一款功能强大的 FPGA(现场可编程门阵列)设计软件。它提供了从设计输入、仿真、综合、优化、布局布线到最终的硬件配置的完整设计流程。Quartus II 支持多种硬件平台,包括但不限于 Cyclone、Arria 和 Stratix 系列 FPGA。 Quartus II 是电子工程师和研究人员在设计和开发 FPGA 应用时广泛使用的软件之一。供代码编辑器、项目管理工具等,提高设计效率,支持多种设计输入方式,如 VHDL、Verilog 等硬件描述语言。本文件代码使用Verilog语言。Verilog 是一种硬件描述语言(HDL),主要用于设计和模拟电子系统,特别是数字电路。Verilog 支持模块化设计,允许设计者将复杂的系统分解为更小、更易于管理的模块。配置上Quartus II提供功能仿真和时序仿真,提供在线调试工具。将综合后的逻辑映射到 FPGA 的物理结构上,并进行布线,成最终的配置文件,用于将设计下载到 FPGA 上,集成开发环境可以优化设计以提高性能和减少资源使用。本文件就是利用Quartusii工具,使用Verilog语言构建一个32位cpu。
ViT算法及其在轴承故障诊断工程领域应用
ViT算法及其在轴承故障诊断工程领域应用
文件切割V1.0.1.zip
蓝某云而言,上传资源必须小于100M,fat32文件格式只能存4G(实际3.9G)这是文件切割机就上场了,将大文件切割成数个小文件,再合并,亲测有效