QT实现自定义带有提示信息的透明环形进度条

1. 概述


做界面开发的童鞋可能都会遇到这样的需求,就是有一些界面点击了之后比较耗时的操作,需要界面给出一个环形进度条的进度反馈信息. 如何来实现这样的需求呢,话不多说,上效果

透明进度条

2. 代码实现


waitfeedbackprogressbar.h

#ifndef WAITFEEDBACKPROGRESSBAR_H
#define WAITFEEDBACKPROGRESSBAR_H#include <QWidget>
#include <QTimer>
#include "customcomponent_global.h"class CUSTOMCOMPONENT_EXPORT WaitFeedbackProgressBar : public QWidget
{Q_OBJECT
public:WaitFeedbackProgressBar(QWidget *parent = nullptr);~WaitFeedbackProgressBar();void start();void stop();protected:void paintEvent(QPaintEvent *event);private slots:void updaterRotation();private:QTimer *m_timer = nullptr;int m_rotation = 0;
};#endif  // WAITFEEDBACKPROGRESSBAR_H

waitfeedbackprogressbar.cpp

#include "waitfeedbackprogressbar.h"#include <QPainter>
#include <QPainterPath>WaitFeedbackProgressBar::WaitFeedbackProgressBar(QWidget *parent): QWidget(parent)
{m_timer = new QTimer;connect(m_timer, &QTimer::timeout,this, &WaitFeedbackProgressBar::updaterRotation);
}WaitFeedbackProgressBar::~WaitFeedbackProgressBar()
{if (m_timer != nullptr) {disconnect(m_timer, &QTimer::timeout,this, &WaitFeedbackProgressBar::updaterRotation);delete m_timer;m_timer = nullptr;}
}void WaitFeedbackProgressBar::start()
{if (m_timer == nullptr) {return;}m_timer->start(3);
}void WaitFeedbackProgressBar::stop()
{if (m_timer == nullptr) {return;}m_timer->stop();
}void WaitFeedbackProgressBar::updaterRotation()
{m_rotation++;if(m_rotation == 360){m_rotation = 0;}update();
}void WaitFeedbackProgressBar::paintEvent(QPaintEvent *event)
{int width = this->width();int height = this->height();int side = qMin(width, height);QPainter painter(this);painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);painter.translate(width / 2, height / 2);painter.scale(side / 200.0, side / 200.0);QConicalGradient gra(QPoint(0,0),0);gra.setColorAt(0, QColor("#3BB6FE"));gra.setColorAt(1, QColor("#FFFFFF"));QBrush brush(gra);int radis = 40;int sider = 5;QRect rect(-radis, -radis, radis * 2, radis * 2);QPainterPath path;path.arcTo(rect, 0, 270);QPainterPath subPath;subPath.addEllipse(rect.adjusted(sider, sider, -sider, -sider));path = path - subPath;painter.setBrush(brush);painter.setPen(Qt::NoPen);painter.rotate(m_rotation);painter.drawPath(path);
}

waitfeedbackdialog.h

#ifndef WAITFEEDBACKDIALOG_H
#define WAITFEEDBACKDIALOG_H#include <QDialog>
#include "dialog_global.h"namespace Ui {
class WaitFeedbackDialog;
}class DIALOG_EXPORT WaitFeedbackDialog : public QDialog
{Q_OBJECT
public:explicit WaitFeedbackDialog(QWidget *parent = nullptr);void start();void stop();signals:private:Ui::WaitFeedbackDialog *ui;
};#endif  // WAITFEEDBACKDIALOG_H

waitfeedbackdialog.cpp

#include "waitfeedbackdialog.h"
#include "ui_waitfeedbackdialog.h"WaitFeedbackDialog::WaitFeedbackDialog(QWidget *parent) :QDialog(parent),ui(new Ui::WaitFeedbackDialog)
{ui->setupUi(this);setWindowFlags(Qt::FramelessWindowHint | windowFlags());setAttribute(Qt::WA_TranslucentBackground, true);
}void WaitFeedbackDialog::start()
{ui->wgt_feedbackprogress->start();
}void WaitFeedbackDialog::stop()
{ui->wgt_feedbackprogress->stop();
}

waitfeedbackdialog.ui
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从业务架构到应用架构技术剖析

从业务架构到应用架构 4A架构理论&#xff0c;一个企业级架构框架&#xff0c;将企业架构&#xff08;EA&#xff09;划分为四大核心领域&#xff0c;每个领域都聚焦于组织的不同维度。该理论提供了一种结构化的设计和理解企业运作方式的方法&#xff0c;确保技术解决方案能…

用Apipost压力测试接口

用Apipost压力测试接口 1.点击自动化测试 2.选择要测试的接口 3.如果没有接口&#xff0c;就先在api调试中添加要测试的接口 4.根据自己的需求设置相应的参数&#xff0c;这里我压测10次 5.这样就可以压测接口了&#xff0c;非常nice

Python库 - Scrapy

Scrapy 是一个用于爬取网站数据、提取结构性数据的开源和协作框架。它最初是为网页抓取设计的&#xff0c;但也可以用于获取 API 提供的数据或作为通用的网络爬虫。 文章目录 主要特性主要组件使用流程1. 安装 Scrapy2. 创建 Scrapy 项目3. 定义 Item&#xff08;数据&#xff…

LayoutLMv1

近年来&#xff0c;预训练技术在各种NLP任务中得到了成功的验证。尽管NLP应用程序广泛使用预训练模型&#xff0c;但它们几乎只关注文本级操作&#xff0c;而忽略了对文档图像理解至关重要的布局和样式信息。在本文中&#xff0c;我们提出了LayoutLM来联合建模文本和布局信息在…

webstorm问题解决:无法识别 @

问题解决tsconfig.json 问题 本地的 vite.config.ts 已经配置 路径 但是&#xff0c;我用webstorm 上识别不了 解决 新增文件tsconfig.json&#xff0c;添加 baseUrl 和 paths 的配置&#xff0c;以告诉 TypeScript 和 WebStorm 如何解析路径别名 tsconfig.json {&quo…

全球首创全息数字人智能手表(全息手表)

小粒W1&#xff1a;全息数字人手表&#xff0c;将健康管理与时尚融为一体&#xff0c;全天候守护您的健康&#xff0c;让数字人管家智能关怀随时可见。 ** 小粒W1 & 小粒GS1 —— 智慧的随身延伸** 小粒W1全息数字人手表&#xff0c;搭配GS1眼镜伴侣&#xff0c;将智能管家…

聚类精度的尺标:SKlearn中的数据聚类性能评估方法

聚类精度的尺标&#xff1a;SKlearn中的数据聚类性能评估方法 聚类分析是无监督学习中的核心任务之一&#xff0c;其目的在于将数据集中的样本划分为若干个簇&#xff0c;使得同一簇内的样本相似度高&#xff0c;而不同簇间的样本相似度低。然而&#xff0c;如何评价聚类结果的…

2006-2021年 291个地级市资源错配指数、劳动和资本相对扭曲指数do文件和结果

资源错配指数&#xff1a;衡量生产要素配置效率的关键指标 资源错配指数&#xff08;Misallocation Index&#xff09;是一个衡量资源配置效率的指标&#xff0c;它反映了生产要素是否得到了合理配置&#xff0c;以及是否达到了生产效率的最优状态。一个较高的资源错配指数意味…

斐讯N1盒子刷入Armbian并安装Docker拉取网络下行流量教程

一直在跑PCDN&#xff0c;目前主推八米云跟点心云&#xff0c;八米单价比点心更高&#xff0c;业务都一样&#xff0c;直播业务。 两种刷机教程我也发下。 八米云&#xff1a;点此跳转 点心云&#xff1a;点此跳转 最近各运营商对PCDN打击力度加大&#xff0c;需求拉取下行流量…

帕金森是怎么回事

帕金森疾病&#xff0c;作为一种慢性神经系统疾病&#xff0c;不仅给患者的日常生活带来了诸多不便&#xff0c;更在无形中影响了他们的睡眠质量。良好的睡眠对于帕金森患者来说尤为重要&#xff0c;它不仅是身体恢复和修复的关键时刻&#xff0c;更是缓解日间疲劳、改善情绪的…

2024最新修复微信公众号无限回调系统源码下载 免授权开心版

2024最新修复微信公众号无限回调系统源码下载 免授权开心版 微信公众平台回调比较麻烦&#xff0c;还不能多次回调&#xff0c;于是搭建一个多域名回调的源码很有必要。 测试环境&#xff1a;Nginx1.24PHP7.2MySQL5.6 图片&#xff1a;

uiautomator2 多种方式键盘输入

最近做了一个爬虫项目&#xff0c;在向文本框输入的时候&#xff0c;使用了多种方法&#xff08;包含&#xff1a;send_keys、set_text&#xff09;等多种方法都无效&#xff0c;最终选择了以下方案得到完美解决。 # 切换输入法 d.set_fastinput_ime(True) op_user_modify d(…

【git】:初识Git 和 Git 的安装

目录 学习 Git 的目标 Git 安装 Linux-centos Linux-ubuntu Windows 学习 Git 的目标 技术目标 掌握 Git 企业级应用&#xff0c;深刻理解Git操作过程与操作原理&#xff0c;理解工作区&#xff0c;暂存区&#xff0c;版本库的含义 掌握 Git 版本管理&#xff0c;自由进⾏…

SCS-900A-21C型 气体分析系统(一氧化碳分析仪)

1&#xff0e; 用途 SCS-900A-21C型气体分析系统是用于工艺气体中的CO、NO、SO2、O2等气体组成连接监测的分析仪器系统&#xff0c;具有降温、除水、除尘、自动吹扫、校准等功能。它为工艺点的正常安全运行提供可靠数据&#xff0c;或参与实时监测和控制。 2&#xff0e; 使用条…

Python列表推导式和字符串方法:高效处理与筛选数据

在日常的编程任务中&#xff0c;我们经常需要对数据集合进行各种操作&#xff0c;如转换元素格式、筛选符合条件的元素等。Python提供了一种非常高效且优雅的方法来处理这类需求——列表推导式&#xff08;List Comprehensions&#xff09;。结合字符串的内置方法&#xff0c;我…

药监局瑞数后缀补环境教学

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; (联系看首页&#xff09; 前言 之前用…

vue + echart 饼形图

图表配置&#xff1a; import { EChartsOption, graphic } from echarts import rightCircle from /assets/imgs/index/right_circle.png export const pieOption: EChartsOption {title: {text: 100%,subtext: 游客加量,left: 19%,top: 42%,textStyle: {fontSize: 24,color:…

部署大语言模型并对话

在阿里云的https://developer.aliyun.com/adc/scenario/b105013328814fe995c0f091d708d67d 选择函数计算 设置服务器配置 复制公网地址 这个地址不能直接 在返回应用&#xff0c;创建应用LLM 对话页面 Open WebUI 点击下面的创建应用 部署完成后访问域名 打开访问地址

模电基础 - 波形的发生和信号的转换

目录 一. 简介 二. 正弦波震荡电路 三. 变压器反馈式振荡电路 四. 电感反馈式震荡电路 五. 电容反馈式震荡电路 六. 石英晶体正弦波震荡电路 七. 非正弦波发生电路 八. 利用集成运放实现的信号转换电路 一. 简介 在模电基础中&#xff0c;波形的发生和信号的转换是重要…

SpringBoot新手快速入门系列教程十:基于Docker Compose,部署一个简单的项目

前述&#xff1a; 本篇教程将略过很多docker下载环境配置的基础步骤&#xff0c;如果您对docker不太熟悉请参考我的上一个教程&#xff1a;SpringBoot新手快速入门系列教程九&#xff1a;基于docker容器&#xff0c;部署一个简单的项目 使用 Docker Compose 支持部署 Docker 项…