当前位置: 首页 > 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…...

Java读取Word图片坐标位置的方法

Word文档中图片坐标怎么获取于实际开发期间&#xff0c;我们时常得去处理Word文档里的图片&#xff0c;像是把图片提取出来&#xff0c;对排版予以调整&#xff0c;亦或是进行自动化校验。然而&#xff0c;好多人在获取图片的坐标位置之际卡住了&#xff0c;这事是由于Word的图…...

Webdash API详解:如何通过RESTful接口扩展和集成外部系统

Webdash API详解&#xff1a;如何通过RESTful接口扩展和集成外部系统 【免费下载链接】webdash &#x1f525; Orchestrate your web project with Webdash the customizable web dashboard 项目地址: https://gitcode.com/gh_mirrors/we/webdash Webdash作为一款可定制…...

Windows提权(一)———系统内核溢出漏洞提权

声明 本博客内容仅供技术学习与安全研究之用&#xff0c;严禁用于任何非法或未授权的活动。转载需注明出处。因不当使用导致的后果&#xff0c;作者不承担责任。 溢出漏洞是一种计算机程序的可更正性缺陷。溢出漏洞的全名&#xff1a;缓冲区溢出漏洞。因为它是在程序执行的时候…...

API 的分布式世界 vs COM 的语言桥梁:典型应用场景深度解析

典型应用场景&#xff1a;API&#xff1a;构建现代分布式系统&#xff0c;如微服务、Web应用、移动后端、IoT设备通信&#xff1b;COM&#xff1a;使不同语言编写的软件组件&#xff08;如C组件被C#、Python调用&#xff09;在Windows上协同工作。对 API 和 COM 的典型应用场景…...

CTF流量分析入门:10种数字犯罪现场建模与逆向思维框架

1. 这不是网络运维&#xff0c;而是解谜游戏&#xff1a;CTF流量分析到底在考什么&#xff1f;很多人第一次点开Wireshark&#xff0c;看到满屏跳动的TCP、HTTP、DNS包&#xff0c;下意识觉得&#xff1a;“这不就是网管查故障的工具吗&#xff1f;”——然后转身就去学Python爬…...

AI代理运行时基础设施:从上下文溢出到可审计事件日志

1. 这不是新赛道&#xff0c;是 runtime 层的“操作系统时刻”来了你有没有在深夜调试一个跑了三小时的 AI 代理&#xff0c;突然发现它开始胡言乱语&#xff1f;不是模型崩了&#xff0c;不是 prompt 写错了&#xff0c;而是——它的“记忆”被挤掉了。上下文窗口就那么大&…...

树莓派Zero 2W + 0.96寸OLED屏保姆级接线与配置教程(附I2C开启与Python库安装)

树莓派Zero 2W与0.96寸OLED屏从接线到显示的完整实战指南 第一次拿到树莓派Zero 2W和0.96寸OLED屏时&#xff0c;那种既兴奋又忐忑的心情我至今记得——这么小的板子真能驱动屏幕吗&#xff1f;接线会不会烧毁设备&#xff1f;经过多次实践和踩坑&#xff0c;我整理出这份真正适…...

寄存器文件与SRAM:芯片设计中存储层次的核心差异与选型指南

1. 项目概述&#xff1a;从“存储”到“访问”的鸿沟在数字电路和处理器设计的核心地带&#xff0c;有两个名字经常被提及&#xff0c;却又常常让初学者甚至一些从业者感到混淆&#xff1a;Register File&#xff08;寄存器文件&#xff09;和SRAM&#xff08;静态随机存取存储…...

用 MinIO 搭建 S3 兼容对象存储服务

用 MinIO 搭建 S3 兼容对象存储服务 分类&#xff1a;开源项目部署 MinIO 适合附件、备份归档和 S3 兼容对象文件。这类主题真正跑起来并不难&#xff0c;难的是上线后稳定、可备份、能排错。本文按实操方式整理一套可以直接落地的流程&#xff0c;默认你已经会登录 Linux 服务…...

Windows热键冲突终极指南:如何用Hotkey Detective一键精准定位占用程序

Windows热键冲突终极指南&#xff1a;如何用Hotkey Detective一键精准定位占用程序 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detecti…...