qt QProgressBar详解

1、概述

QProgressBar是Qt框架中的一个控件,专门用于显示任务的进度。它提供了一个可视化的进度条,让用户能够直观地了解任务的完成程度。QProgressBar支持水平和垂直两种显示方向,并且可以通过设置最小值和最大值来指定进度条的范围。此外,QProgressBar还允许自定义样式,以满足不同的用户界面需求。

2、重要方法

QProgressBar类提供了多种方法来配置和控制进度条的行为:

  • 设置范围

    • setRange(int minimum, int maximum):设置进度条的最小值和最大值。
    • setMinimum(int minimum):单独设置进度条的最小值。
    • setMaximum(int maximum):单独设置进度条的最大值。
  • 设置当前值

    • setValue(int value):设置进度条的当前值。
    • value():获取进度条的当前值。
  • 重置进度条

    • reset():将进度条的当前值重置为最小值(通常用于重新开始任务)。
  • 设置方向

    • setOrientation(Qt::Orientation orientation):设置进度条的方向为水平或垂直。
  • 设置外观

    • setInvertedAppearance(bool inverted):如果设置为true,则进度条的方向将与其默认方向相反。
    • setTextVisible(bool visible):设置是否显示进度条上的文本(通常是当前值的百分比)。
    • setFormat(const QString &format):自定义进度条上显示的文本格式。可以使用%p表示百分比,%v表示当前值,%m表示总值。
  • 其他方法

    • setAlignment(Qt::Alignment alignment):设置进度条上文本的对齐方式。
3、重要信号

QProgressBar类提供了一个重要的信号来通知开发者进度条的变化:

  • valueChanged(int value):当进度条的当前值发生变化时发出。这个信号携带新的整数值作为参数,表示进度条的当前值。
#include <QApplication>  
#include <QWidget>  
#include <QVBoxLayout>  
#include <QProgressBar>  
#include <QTimer>  
#include <QLabel>  class MyWidget : public QWidget {  Q_OBJECT  public:  MyWidget(QWidget *parent = nullptr) : QWidget(parent) {  QVBoxLayout *layout = new QVBoxLayout(this);  QProgressBar *progressBar = new QProgressBar(this);  progressBar->setRange(0, 100);  progressBar->setValue(0);  progressBar->setAlignment(Qt::AlignCenter);  QLabel *label = new QLabel("进度: 0%", this);  QTimer *timer = new QTimer(this);  connect(timer, &QTimer::timeout, this, &MyWidget::updateProgressBar);  layout->addWidget(progressBar);  layout->addWidget(label);  setLayout(layout);  // 启动定时器,每隔100毫秒更新一次进度条  timer->start(100);  }  private slots:  void updateProgressBar() {  QProgressBar *progressBar = findChild<QProgressBar*>();  QLabel *label = findChild<QLabel*>();  if (progressBar && label) {  int currentValue = progressBar->value();  if (currentValue < 100) {  progressBar->setValue(currentValue + 1);  label->setText(QString("进度: %1%").arg(currentValue + 1));  } else {  // 停止定时器  QTimer *timer = findChild<QTimer*>();  if (timer) {  timer->stop();  }  label->setText("任务完成!");  }  }  }  
};  int main(int argc, char *argv[]) {  QApplication app(argc, argv);  MyWidget widget;  widget.show();  return app.exec();  
}  

觉得有帮助的话,打赏一下呗。。

           

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

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

相关文章

力扣最热一百题——杨辉三角

目录 题目链接&#xff1a;118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示: 解法一&#xff1a;利用特性构建杨辉三角 1. 结果存储结构&#xff1a; 2. 初始化和循环遍历每一层&#xff1a; 3. 构建每一层&#xff1a; 4. 填充中间的元素&…

解决com.mysql.jdbc.NonRegisteringDriver内存泄漏问题

1. 问题背景 线上出现内存报警&#xff0c;通过dump文件&#xff0c;MAT分析&#xff0c;发现mysql-connector-java 有内存泄漏问题 2.问题分析 然后看大对象列表&#xff0c;NonRegisteringDriver 对象确实占内存比较多&#xff0c;里面村的数据库连接的虚引用占比较多 3.解…

ElementPlus ElTable展开行展开时动态获取数据后瞬间关闭

问题描述 el-table组件展开行, 展开时调用接口, 将响应数据添加到row上, 此时展开行会瞬间自动关闭 (data数据改变导致元素重构) 解决 el-table 上添加 row-key"id"属性

SMTP代理

背景&#xff1a; 我们有一个第三方的系统支持通过邮件发送报警&#xff0c;但是只支持基本的smtp功能&#xff0c;输入账号密码/邮箱地址/邮件服务器地址/端口号&#xff0c;却不支持加密功能&#xff0c;试了下starttls和ssl加密都不行。所以最终解决方案是加一个smtp代理来…

React 探秘(四):手撸 mini-react

文章目录 背景实现能力手撸开始demo流程拆解实现 render 函数构建 fiber 树处理工作单元实现 create fiber加入 diff fiber 的逻辑 commit 阶段hooks 实现 源码地址参考文章 背景 前文中学习了 react 中核心的 fiber 架构&#xff0c;时间切片&#xff0c;双缓存等&#xff0c…

【AIGC】ChatGPT提示词Prompt高效编写技巧:逆向拆解OpenAI官方提示词

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;OpenAI官方提示词的介绍OpenAI官方提示词的结构与组成如何通过分析提示词找到其核心组件 &#x1f4af;OpenAI官方提示词分析案例一&#xff1a;制定教学计划案例二&…

Ubuntu 22 安装 Apache Doris 3.0.3 笔记

Ubuntu 22 安装 Apache Doris 3.0.3 笔记 1. 环境准备 Doris 需要 Java 17 作为运行环境&#xff0c;所以首先需要安装 Java 17。 sudo apt-get install openjdk-17-jdk -y sudo update-alternatives --config java在安装 Java 17 后&#xff0c;可以通过 sudo update-alter…

多线程生产消费者模型

线程同步 互斥锁(互斥量)条件变量生产/消费者模型 一、互斥锁 C11提供了四种互斥锁&#xff1a; mutex&#xff1a;互斥锁。timed_mutex&#xff1a;带超时机制的互斥锁。recursive_mutex&#xff1a;递归互斥锁。recursive_timed_mutex&#xff1a;带超时机制的递归互斥锁…

理解 WordPress | 第五篇:页面构建器选择指南

WordPress 专题致力于从 0 到 1 搞懂、用熟这种可视化建站工具。 第一阶段主要是理解。 第二阶段开始实践个人博客、企业官网、独立站的建设。 如果感兴趣&#xff0c;点个关注吧&#xff0c;防止迷路。 什么是 WordPress 构建器 WordPress 构建器&#xff08;Page Builder&am…

SpringBoot中扩展Druid的过滤器实现完整的SQL打印

文章目录 前言正文环境说明过滤器扩展配置数据源和过滤器数据库配置信息打印结果 前言 之前通过Mybatis 、Mybatis Plus 的拦截器扩展&#xff0c;实现自定义的Handler&#xff0c;拼接了完整的SQL。 本次使用 Druid 的过滤器来实现这一功能。输出一个完整的sql&#xff0c;并…

【Linux系统编程】第四十二弹---多线程编程全攻略:涵盖线程创建、异常处理、用途、进程对比及线程控制

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、线程创建 2、线程异常 3、线程用途 4、进程 VS 线程 5、线程控制 5.1、创建和等待线程 1、线程创建 线程能看到进程的大…

基于SSM的在线作业管理系统 -octopus-master(源码+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

Anolis8防火墙安全设置

一、账号安全 1、禁止root远程登录 首先创建一个普通用户&#xff0c;然后修改系统配置禁止root登录&#xff0c;因为root作为系统默认的超级管理员&#xff0c;权限过大&#xff0c;日常操作使用易导致安全风险。 1.1、首先要建立一个新的登录用户 useradd username #增…

java8 list map 聚合求和

目标&#xff1a; 统计地市的总的完成数量&#xff0c;并根据总数来排序。 要把下面的数据&#xff1a; [{"city_name": "南京市","carrier_id": "2","carrier_name": "移动","city_id": "0&qu…

Linux下的systemd/service

开机自启任务 一. 概述 systemd 是现代 Linux 系统中管理系统和用户服务的工具&#xff0c;可以创建一个 systemd 服务来实现开机自启的任务 二. 操作 1. 创建 systemd 服务文件 使用文本编辑器创建一个新的服务文件&#xff1a; sudo vim /etc/systemd/system/test.servi…

医学影像类和医用电气设备测试标准整理

医学影像类和医用电气设备测试标准整理 1、GB 9706.225-2022 医用电气设备 第2-25部分:心电图机的基本安全和基本性能专用要求 GB 9706.225规定了在201.3.63中定义的通过自身或作为ME系统一部分,提供可供诊断用的心电图报告的心电图机基本安全和基本性能,以下称为ME设备。 …

git cherry-pick 小技巧

假设您现在的工作分支是 master&#xff0c;并且您想从远程仓库的 master 分支只挑选两个特定的 commit&#xff08;例如 2343434 和 55676788&#xff09;来更新您的本地分支&#xff0c;然后将更新后的结果强制推送回远程仓库。 ### 详细操作步骤1. **切换到您的工作分支**:b…

鸿蒙原生应用开发及部署:首选华为云,开启HarmonyOS NEXT App新纪元

目录 前言 HarmonyOS NEXT&#xff1a;下一代操作系统的愿景 1、核心特性和优势 2、如何推动应用生态的发展 3、对开发者和用户的影响 华为云服务在鸿蒙原生应用开发中的作用 1、华为云ECS C系列实例 &#xff08;1&#xff09;全维度性能升级 &#xff08;2&#xff…

3^100的位数判断

3^100的位数判断 问题来源 字节面试&#xff0c;面试官提问&#xff1a;口算估计3^100的位数&#xff0c;或是给出位数估计范围。 解决方案 方法一&#xff1a; 该方法纯口算&#xff0c;可得一个较为准确的一个范围 2 100 < 3 100 < 4 100 2^{100}<3^{100}<…

ROS2简介与Ubuntu24.04中安装指南

之前安装了一个版本&#xff0c;但是不愿意写blog&#xff0c;现在想想自己就是个沙子立个flag&#xff0c;每次配置项目&#xff0c;写流程blog ROS简介 ROS&#xff08;Robot Operating System&#xff09;是一个开源的机器人软件平台&#xff0c;提供了许多工具和库来帮助…