【Qt】QLCDNumberQProgressBarQCalendarWidget

news2024/11/28 6:50:20

目录

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());
}

程序运行如下

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

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

相关文章

【全面介绍下Gitea,什么是Gitea?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

这几个高级爬虫软件和插件真的强!

亮数据&#xff08;Bright Data&#xff09; 亮数据是一款强大的数据采集工具&#xff0c;以其全球代理IP网络和强大数据采集技术而闻名。它能够轻松采集各种网页数据&#xff0c;包括产品信息、价格、评论和社交媒体数据等。 网站&#xff1a;https://get.brightdata.com/we…

ubuntu安装并配置flameshot截图软件

参考&#xff1a;flameshot key-bindins 安装 sudo apt install flameshot自定义快捷键 Settings->Keyboard->View and Customize Shortcuts->Custom Shortcuts&#xff0c;输入该快捷键名称&#xff08;自定义&#xff09;&#xff0c;然后输入command&#xff08;…

RFID物流智能锁在物流锁控领域的意义与应用

在当今全球化和电子商务迅速发展的时代&#xff0c;物流行业作为经济的重要支撑&#xff0c;面临着日益增长的安全、效率和管理需求。物流锁控作为保障货物在运输过程中安全与完整的关键环节&#xff0c;传统的机械锁和简单电子锁已经难以满足现代物流复杂多变的业务场景。 一、…

前缀表达式(波兰式)和后缀表达式(逆波兰式)的计算方式

缀是指操作符。 1. 前缀表达式&#xff08;波兰式&#xff09; &#xff08;1&#xff09;不需用括号&#xff1b; &#xff08;2&#xff09;不用考虑运算符的优先级&#xff1b; &#xff08;3&#xff09;操作符置于操作数的前面。&#xff08;如 3 2 &#xff09; 1.1 中…

3.5.3、查找和排序算法-插入类排序和选择类排序

术语说明 稳定&#xff1a;如果a原本在b前面&#xff0c;而ab,排序之后a仍然在b的前面&#xff1b; 不稳定&#xff1a;如果a原本在b的前面&#xff0c;而ab,排序之后a可能会出现在b的后面&#xff1b; 例如&#xff1a;数组{1,2,3,3,4,7,6}。如果排序后&#xff0c;两个3的位…

【嵌入式之RTOS】死锁问题详解

目录 一、什么是死锁 二、产生死锁的四个必要条件 三、避免死锁的方法 四、实际应用中的考虑 一、什么是死锁 死锁&#xff08;Deadlock&#xff09;是多任务或多线程环境中一个常见的问题&#xff0c;尤其是在实时操作系统&#xff08;RTOS&#xff09;中&#xff0c;如果…

kvm虚拟化平台部署

kvm虚拟化平台部署 kvm概念简介 kvm自linux2.6版本以后就整合到内核中&#xff0c;因此可以看做是一个原生架构. kvm虚拟化架构 硬件底层提供物理层面的硬件支持 linux&#xff08;host&#xff09;&#xff0c;就相当于这个架构中的宿主机&#xff0c;上面运行了多个虚拟机。…

替换后端国外身份目录服务,宁盾身份域管接管FileNet助力国产化升级

IBM FileNet 是一款优秀的企业内容管理解决方案&#xff0c;为客户提供了领先的文档管理和流程管理集成环境&#xff0c;被大量企业所采用。FileNet 需要使用企业级的目录服务器&#xff08;LDAP&#xff09;作为其用户管理系统&#xff0c;满足其认证和授权的需求。对于 LDAP …

最高200万!苏州成都杭州的这些AI政策补贴,你拿到了吗?

随着全球人工智能技术的迅猛发展&#xff0c;地方政府纷纷出台相关政策以抢占未来科技的制高点。苏州 成都 杭州这三个城市更是推出了一系列AI政策补贴&#xff0c;旨在通过多方面支持&#xff0c;推动本地AI产业的发展。本文将带你了解目前不完全统计到的苏州 成都 杭州三地AI…

【Vulnhub系列】Vulnhub_pipe 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub-pipe 靶场渗透 原文转载已经过授权 原文链接&#xff1a;Lusen的小窝 - 学无止尽&#xff0c;不进则退 (lusensec.github.io) 一、环境配置 1、解决IP扫描不到问题 2、打开虚拟机&#xff0c;并修改网络连接模式为【NAT】即可 二、信息收集 1…

Python实战——轻松实现动态网页爬虫(附详细源码)

大家好&#xff0c;我是东眠的鱼&#xff0c;专注原创&#xff0c;致力于用浅显易懂的语言分享爬虫、数据分析及可视化等干货&#xff0c;希望人人都能学到新知识。<文末附带精品籽料哦&#xff0c;也可以和博主一起学Python呀&#xff01;> 项目背景 有同学自学爬虫时…

前端vue3 巧妙的checkbox 选中框样式

我们 做前端页面交互效果的时候 我们会使用到 checkbox 复选框 做一些交互的效果 我是用的是 nut-ui 组件库中的 checkbox 组件 类似于这样的选中效果 假如 二选一的那种 可以 这样写 交互好看 而不是单纯的 checkbox 框 这里我就不使用 gif 图片了 大家应该都可以看懂的 …

A股继续震荡下行,成交量继续一蹶不振。

A股继续震荡下行&#xff0c;成交量继续一蹶不振。今天的A股&#xff0c;让人揪心不已&#xff0c;你们知道是为什么吗&#xff1f;盘面上出现1个重要信号&#xff0c;一起来看看&#xff1a; 1、今天两市低开低走&#xff0c;向下回补了2867点的缺口&#xff0c;让人揪心不已。…

计算机毕业设计选题推荐-基于司机信用评价的货运管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

CUDA_Occupancy_Calculator计算公式

CUDA_Occupancy_Calculator计算公式

6 Java的基本程序设计结构(基本语法5)- 面向对象进阶

文章目录 面向对象进阶一、 static 静态1 静态变量(1)基本定义和用法(2)静态变量内存图2 静态方法(1)基本定义和用法(2)工具类练习:按下面需求写一个工具类3 static注意事项4 重新认识main方法二、继承1 继承的概念2 继承的特点3 继承到底能继承父类中的哪些内容?4 继…

leetcode日记(63)颜色分类

感觉就是排序问题&#xff1f;我使用的是时间复杂度比较高的简单粗暴排序法&#xff0c;时间复杂度O&#xff08;n^2&#xff09;。 class Solution { public:void sortColors(vector<int>& nums) {int nnums.size();for(int i0;i<n;i){for(int ji1;j<n;j){if…

泛微OA BPM 全程数字化业务介绍、管理、财务一体化 数据业务架构图 上帝视角 02

III.泛微业务、管理、财务一体化过程介绍 IV.低代码平台及典型场景搭建过程 V.全程数字化运营平台价值总结 档案管理 档案接收,四性检测,快速可查找 重要:档案管理:架构总图 业务应用都在一个平台,确保档案实现100%归档 自动化档案采集:自动接收各类档案,如文书档案、合…

速通JS模块化规范

目录 1模块化概述 1.1什么是模块化&#xff1f; 1.2为什么需要模块化&#xff1f; 2有哪些模块化规范&#xff1f; 3导入与导出的概念 4CommonJS 规范 4.1初步体验 4.2导出数据 4.3导入数据 4.4扩展理解 4.5浏览器端运行 5ES6 模块化规范 5.1初步体验 5.2Node 中运…