当前位置: 首页 > news >正文

【Qt】QLCDNumberQProgressBarQCalendarWidget

目录

QLCDNumber

倒计时小程序 

相关属性

QProgressBar

 进度条小程序

相关设置


QLCDNumber

QLCDNumber是Qt框架中用于显示数字或计数值的小部件。通常用于显示整数值,例如时钟、计时器、计数器

常用属性

属性说明
intValueQLCDNumber显示的初始值(int类型)
value

QLCDNumber显示的初始值(double),和intValue是联动的

例如给value设置为1.5,intValue的值就是2

设置value和intValue的API是display,不是setValue或setIntValue

digitCount显示几位数字,可大致控制LCDNumber的大小
mode

数字显示形式

  • QLCDNumber::Dec    十进制模式,显示常规的十进制数字
  • QLCDNumber::Hex    十六进制模式
  • QLCDNumber::Bin      二进制模式
  • QLCDNumber::Oct      八进制模式

只有十进制的时候才能显示小数点后内容

segmentStyle

设置显示风格

  • QLCDNumber::Flat    平面的显示风格,数字呈现在一个平坦的表面上
  • QLCDNumber::OutLine    轮廓显示风格,数字具有清晰的轮廓和阴影效果
  • QLCDNumber::Filled    填充显示风格,数字被填充颜色并与背景区分开
smallDecimalPoint设置比较小的小数点

倒计时小程序 

倒计时可以使用QTimer,信号和槽实现

QTimer可以通过start()函数设置周期发出timeout信号

void start(int msec);

参数单位是毫秒,start(1000)代表1秒发出一次timeout信号

程序思路如下:

  1. 创建QTimer对象
  2. 关联timeout信号和相应的槽函数
  3. 启动QTimer
  4. 槽函数中修改LCDNumber的值,当倒计时为0时,关闭QTimer

代码如下:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置QLCDNumber的初始值ui->lcdNumber->display(10.00);//绑定信号和槽函数//信号使用QTimer(计时器)的timeout信号timer = new QTimer(this);connect(timer, &QTimer::timeout, this, &Widget::handle);//计时器还需要启动timer->start(10);//参数是设定周期,按周期发出timeout信号}void Widget::handle()
{double value = ui->lcdNumber->value();if(value <= 0.0){timer->stop();//倒计时为0时停止计时器return;}ui->lcdNumber->display(value - 0.01);//计时器-1
}

相关属性

segmentStyle,可以设置显示风格

  • QLCDNumber::Flat           平面的显示风格,数字呈现在一个平坦的表面上
  • QLCDNumber::OutLine    轮廓显示风格,数字具有清晰的轮廓和阴影效果
  • QLCDNumber::Filled        填充显示风格,数字被填充颜色并与背景区分开


 digitCount,可以设置显示几位数

QProgressBar

 QProgressBar是Qt框架中用于显示进度的小部件。通常用于表示任务完成的进度或操作的进展情况。

常用属性

属性说明
minimum进度条最小值
maximum

进度条最大值

value进度条当前值
alignment

文本在进度条中的对齐方式

  • Qt::AlignLeft          左对齐
  • Qt::AlignRight       右对齐
  • Qt::AlignCenter     居中对齐
  • Qt::AlingnJustify    两端对齐
textVisible

进度条的数字是否可见

orientation

进度条的方向是水平还是垂直

invertAppearance

是否是朝向反方向增长进度
textDirection文本的朝向
format

展示的数字格式

  • %p:表示进度的百分比(0-100)
  • %v:表示进度的数值(0-100)
  • %m:表示剩余时间(以毫秒为单位)
  • %t:表示总时间(以毫秒为单位)

 进度条小程序

程序思路如下:

  1. 初始化QProgressBar对象
  2. 创建QTimer对象
  3. 关联timeout信号和相应的槽函数
  4. 启动QTimer
  5. 槽函数中修改QProgressBar的值,当进度条满时,关闭QTimer
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置进度条的起始和终止ui->progressBar->setMinimum(0);ui->progressBar->setMaximum(100);//设置定时器timer = new QTimer(this);//连接信号和槽函数connect(timer, &QTimer::timeout, this, &Widget::handle);//启动定时器,周期为0.1秒timer->start(100);
}void Widget::handle()
{int value = ui->progressBar->value();if(value >= 100){timer->stop();return;}ui->progressBar->setValue(value + 1);
}


相关设置

setAlignment()//设置进度条数字的对齐方式

setOrientation()//设置进度条的方向是水平还是垂直
  • setOrientation(Qt::Orientation::Vertical)         垂直方向
  • setOrientation(Qt::Orientation::Horizontal)    水平方向     

setInvertAppearance()//设置进度条是否反向增长,true是从右往左,false是从左往右


上述两个程序都使用了QTimer的timeout信号

读者可能会想到创建一个新的线程,更改倒计时或者进度条的值,但Qt是不允许的

Qt中,界面有一个专门的线程负责维护更新(主线程)

对于GUI来说,内部包含了很多的隐藏状态,Qt为了保证修改界面的过程中,线程安全是不会受到影响的,Qt禁止了其他线程直接修改界面

所以Qt要求,对界面的修改都必须在主线程中完成,所以不允许创建新的线程对界面进行修改

QCalendarWidget

 QCalendarWidget是Qt框架中用于显示日历和处理日期选择的小部件。允许用户查看和选择日期,并支持多种日期显示格式和交互功能

常用属性

属性说明
selectDate当前选中的日期
minimumDate

最小日期

maximumDate最大日期
firstDayOfWeek

每周的第一天(日历的第一列)是周几

gridVisible

是否显示日历的边框

selectionMode

是否允许选择日期

navigationBarVisible

日历上方标题是否显示
horizontalHeaderFormat日历上方标题显示的日期格式
verticalHeaderFormat

日历第一列显示的内容格式

dateEditEnabled是否允许日期被编辑

 重要信号

信号说明
selectionChanged(const QDate&)当选中的日期发生改变时发出
activated(const QDate&)

当双击一个有效日期或按下回车键时发出,形参是一个QDate类型,保存了当前选中的日期

currentPageChanged(int, int)当当前页面的年份月份改变时发出,形参是改变后的新年份和月份

示例:selectionChanged信号发出 

Qt Designer设计的界面如下:

添加selectionChanged信号的槽函数

void Widget::on_calendarWidget_selectionChanged()
{ui->label->setText(ui->calendarWidget->selectedDate().toString());
}

程序运行如下

相关文章:

【Qt】QLCDNumberQProgressBarQCalendarWidget

目录 QLCDNumber 倒计时小程序 相关属性 QProgressBar 进度条小程序 相关设置 QLCDNumber QLCDNumber是Qt框架中用于显示数字或计数值的小部件。通常用于显示整数值&#xff0c;例如时钟、计时器、计数器等 常用属性 属性说明intValueQLCDNumber显示的初始值(int类型)va…...

C++ 代码实现局域网即时通信功能 (windows 系统 客户端)

本项目使用C实现具备多个客户端和服务器端即时通信聊天功能软件 一&#xff1a;项目内容 使用C实现一个具备多客户端和一个服务器端即时通信功能的聊天软件。 本项目的目的是 学习在windows平台下&#xff0c;进行C网络开发的基本概念&#xff1a;TCP/IP socket通信&#xff0…...

机器人阻抗控制实现方法及其存在的科学问题

一、机器人阻抗控制的实现方法 机器人阻抗控制主要分为两种方法:基于位置的阻抗控制和基于力的阻抗控制。 基于位置的阻抗控制: 工作原理:让机器人电机在位置模式下工作,通过发送目标位置和速度实现阻抗特性。主要目的:控制机器人的位置精度和运动轨迹。特点:该方法侧重…...

解决:xxx.xxx/res/modules/.ds_store: error: the file name must end with .xml 问题

解决&#xff1a;xxx.xxx/res/modules/.ds_store: error: the file name must end with .xml 问题 该问题是由于Android Studio校验到布局文件中存在不以.xml后缀名结尾的文件&#xff0c;这个文件就是.DS_store&#xff0c;它是Mac上系统自动创造的隐藏文件&#xff0c;把该文…...

EEtrade:区块链技术的五大应用场景

区块链技术&#xff0c;作为近年来备受瞩目的颠覆性技术&#xff0c;其去中心化、透明化、安全性和可追溯性等特性&#xff0c;为各行各业带来了前所未有的机遇。从数字货币到金融资产交易结算&#xff0c;从数字政务到存证防伪&#xff0c;再到数据服务&#xff0c;区块链正逐…...

DAO、DPO、DTO、POJO、VO、BO、EBO

目录 1. DAO (Data Access Object) 2. DPO (Data Persistence Object) 3. DTO (Data Transfer Object) 4. POJO (Plain Old Java Object) 5. VO (Value Object) 6. BO (Business Object) 7. EBO (Entity Bean Object) 在Java开发中&#xff0c;尤其是与数据访问和对象映…...

数据库期末复习

数据库期末复习 分析题 1 &#xff08;1&#xff09;使用数据库系统可以大大提高应用开发的效率&#xff0c;方便用户的使用减轻数据库系统管理人员维护的负担&#xff0c;请回答数据库系统有哪些部分组成&#xff1f;什么是数据库管理系统&#xff0c;其主要功能包括哪些方而&…...

pyinstaller带浏览器一起打包playwright 独立运行exe

前置条件 没有安装自带环境&#xff0c;则 playwright install 安装了自带的浏览器 查看playwright的浏览器的位置 playwright install --dry-run 打开此文件夹可以看到 新建一个多层级目录playwright\driver\package.local-browsers 然后复制chromium-1124到playwright\dr…...

docker添加容器服务所需字体

1、在宿主机新建chinese目录 [rootHS-AP-application ~]#mkdir /usr/share/fonts/chinese 2、上传字体 把windows c盘下的Windows/Fonts下的所有字段上传至/usr/shared/fonts/chinese 3、授权chinese目录 chmod -R 755 /usr/share/fonts/chinese 4、生成fonts.scale文件 …...

Java面试八股之Spring AOP 和 AspectJ AOP 的区别

Spring AOP 和 AspectJ AOP 的区别 Spring AOP 和 AspectJ AOP 是两种不同的面向切面编程&#xff08;Aspect-Oriented Programming, AOP&#xff09;实现。它们各有特点&#xff0c;适用于不同的场景。下面是一些主要的区别&#xff1a; 1. 实现机制 Spring AOP: 基于代理…...

Java人力资源招聘社会校招类型招聘系统PC端

&#x1f50d;【揭秘】人力资源新利器&#xff01;社会校招一站式PC端招聘系统全攻略&#x1f680; &#x1f308; 开篇引言&#xff1a;招聘新纪元&#xff0c;效率为王&#xff01; Hey小伙伴们&#xff0c;你是否还在为繁琐的招聘流程头疼不已&#xff1f;&#x1f92f; 面…...

C# 知识点总结

入门 C#程序在.NET上运行&#xff0c;.NET framework包含两个部分&#xff1a; ①&#xff1a;.NET framework类库 ②&#xff1a;公共语言运行库CLR&#xff08;.NET虚拟机&#xff09; CLS&#xff08;公共语言规范&#xff09; CTS&#xff08;通用类型系统&#xff09; .N…...

【ffmpeg命令入门】视频的旋转与翻转

文章目录 前言什么时候需要使用旋转与翻转1. 视频拍摄方向不正确2. 视频编辑特效使用什么参数1. 旋转视频 - transpose2. 水平翻转视频 - hflip3. 垂直翻转视频 - vflip 总结 前言 在视频编辑的过程中&#xff0c;我们经常会遇到需要旋转或翻转视频的情况。无论是因为拍摄时相…...

学懂C语言(二十五):深入理解 C语言结构体 位域 的概念

目录 一、位域的基本概念 二、位域的定义 三、位域的内存分配和大小计算 示例1&#xff1a;简单位域 示例2&#xff1a;跨越多个存储单元 注意事项 结构体对齐控制 总结 C语言中的位域&#xff08;Bit-Field&#xff09;是一种特殊的数据结构&#xff0c;允许在结构体中…...

LLM推理优化——KV Cache篇(百倍提速)

LLM推理优化——KV Cache篇&#xff08;百倍提速&#xff09; 注意&#xff1a;KV Cache本质上是空间换时间的技术。与计算机组成原理中的cache不同&#xff0c;它不涉及访存优化。 不知道大家在用LLM的时候&#xff0c;有没有注意到一个问题&#xff1a;我们在输入我们的问题…...

Linux进程--system

...

[Office] Word 特殊字符

0 打开“特殊字符集” 依次选择&#xff1a;Insert -> Symbol -> More Symbol 1 带圈编号 字体Font选择Wingdings...

联想电脑怎么重装系统_联想电脑U盘重装win10详细图文教程

联想电脑怎么重装系统&#xff1f;在当今科技发展迅猛的时代&#xff0c;联想电脑已经成为了人们生活中不可或缺的一部分。然而&#xff0c;随着时间的推移&#xff0c;我们可能会遇到一些问题&#xff0c;例如系统崩溃或者需要更换操作系统。这时&#xff0c;使用U盘来重新安装…...

前端开发者必备:揭秘谷歌F12调试的隐藏技巧!

前言 使用断点&#xff08;breakpoint&#xff09;是调试 JavaScript 代码的一种非常有效的方式。通过在代码的关键位置设置断点&#xff0c;可以阻止页面的状态变化&#xff0c;从而方便地检查和修改页面的当前状态。 1. 使用 setTimeout 配合 debugger 和 console.log setTi…...

vivado IP_REPO_PATHS

此属性允许您创建自定义IP目录&#xff0c;以与Vivado Design Suite一起使用。 IP_REPO_PATHS属性定义了一个或多个目录的路径&#xff0c;这些目录包含 第三方或用户定义的IP。指定的目录和任何子目录是 搜索要添加到Vivado Design Suite IP目录以用于设计的IP定义 进入或与IP…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...