【QT】定时器事件 - QTimerEvent QTimer

qt 系统 - 定时器

  • 定时器
    • 1. QTimerEvent
    • 2. QTimer
    • 3. 获取系统日期及时间

定时器

Qt 中在进行窗口程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使用定时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀个任务。定时器在很多场景下都会使⽤到,如弹窗⾃动关闭之类的功能等。

Qt 中的定时器分为 QTimerEventQTimer 这2个类。

  • QTimerEvent 类用来描述⼀个定时器事件。在使用时需要通过 startTimer() 函数来开启⼀个定时器,这个函数需要输⼊⼀个以毫秒为单位的整数作为参数来表明设定的时间,它返回的整型值代表这个定时器。当定时器溢出时(即定时时间到达)就可以在 timerEvent() 函数中获取该定时器的编号来进行相关操作。
  • QTimer 类来实现⼀个定时器,它提供了更高层次的编程接口,如:可以使用信号和槽,还可以设置只运行一次的定时器。

1. QTimerEvent

示例代码1: 在UI界⾯上放置两个 Label 控件,⼀个让其1秒数字累加⼀次,⼀个让其2秒数字累加⼀次。

1、新建项⽬,在UI界⾯⽂件放置两个 Label 控件:

在这里插入图片描述

2、在 “widget.h” 头⽂件中声明 timerEvent() 函数,并定义两个整型变量 timer_id1timer_id2

				class Widget : public QWidget{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();// 重写定时器事件void timerEvent(QTimerEvent* event);private:Ui::Widget *ui;int timer_id1 = 0;int timer_id2 = 0;};

3、在 “widget.cpp” ⽂件中重写 timerEvent() 函数;

			Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);// 启动定时器timer_id1 = startTimer(1000);timer_id2 = startTimer(2000);}void Widget::timerEvent(QTimerEvent *event){if(event->timerId() == timer_id1) {static int num1 = 1;// lb1 每隔1秒加一次ui->lb1->setText(QString::number(num1++));}if(event->timerId() == timer_id2) {static int num2 = 1;// lb2 每隔2秒加一次ui->lb2->setText(QString::number(num2++));}}

效果如下:

在这里插入图片描述

2. QTimer

代码示例: 在UI界⾯放置⼀个 Label 标签,两个按钮,分别是 “开始” 和 “停⽌” ,当点击 “开始” 按钮时,开始每隔1秒计数⼀次,点击 “停⽌” 按钮时,暂停计数。

1、设计 UI 界⾯如下:

在这里插入图片描述

2、在 “widget.cpp” ⽂件中实现对应功能;

			#include "widget.h"#include "ui_widget.h"#include <QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);QTimer* time = new QTimer(this);connect(ui->btn1, &QPushButton::clicked, [=](){time->start(1000);});connect(time, &QTimer::timeout, [=](){static int num = 1;ui->label->setText(QString::number(num++));});connect(ui->btn2, &QPushButton::clicked, [=](){time->stop();});}

实现效果如下:

在这里插入图片描述

3. 获取系统日期及时间

在 Qt 中,获取系统的日期及实时时间可以通过 QTimer 类 和 QDateTime类。

QDateTime 类提供了字符串格式的时间。字符串形式的时间输出格式由 toString() 方法中的 format 参数列表决定,可用的参数列表如下:

在这里插入图片描述

代码示例: 获取系统日期及实时时间;

1、设计UI界面文件;放置⼀个 Label 控件,⽤来显示日期及时间,放置两个按钮:“开始” 和 “停止” ;

在这里插入图片描述

2、在 “widget.h” 头⽂件中声明更新时间的槽函数 TimeUpDate();

			class Widget : public QWidget{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;public slots:void TimeUpDate();};

3、在 “widget.cpp” ⽂件中实现对应功能;

			#include "widget.h"#include "ui_widget.h"#include <QTimer>#include <QDateTime>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);QTimer* time = new QTimer(this);connect(ui->btn1, &QPushButton::clicked, [=](){time->start(1000);});connect(ui->btn2, &QPushButton::clicked, [=](){time->stop();});connect(time, &QTimer::timeout, this, &Widget::TimeUpDate);}void Widget::TimeUpDate(){QString str = QDateTime::currentDateTime().toString("yyyy-MM-dd hh::mm::ss");ui->label->setText(str);}

实现的效果如下:

在这里插入图片描述

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

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

相关文章

EXO项目解析:pynvml怎么实现监控的,包括什么参数

目录 pynvml怎么实现监控的,包括什么参数 pynvml实现监控的方式 pynvml包括的主要参数 GPU功耗的组成 举例说明 注意事项 EXO项目解析:https://github.com/exo-explore/exo?tab=readme-ov-file 这段代码是一个使用setuptools库编写的Python包安装脚本,主要用于定义和…

GIT命令学习 一

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

C++文件操作-文本文件-读文件

第一种 #include<iostream>//1、包含头文件 fstream #include<fstream> using namespace std;void test01() {//2、创建流对象ifstream ifs;//3、打开文件 并且判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "…

【Git】(基础篇六)—— 发现好项目

发现github上的好项目 在开源社区中&#xff0c;发现好的项目&#xff0c;不论是对于自己的学习&#xff0c;还是在前人的基础上继续改进&#xff0c;都十分重要&#xff0c;本文为你介绍如何在github上面找到好的项目&#xff08;gitee同理&#xff09; 关注活跃大牛 GitHu…

ARM架构(二)—— arm v7-a/v8/v9寄存器介绍

1、ARM v7-A寄存器 1.1 通用寄存器 V7 V8开始 FIQ个IRQ优先级一样&#xff0c; 通用寄存器&#xff1a;31个 1.2 程序状态寄存器 CPSR是程序状态毒存器&#xff0c;保存条件标志位&#xff0c;中断禁止位&#xff0c;当前处理器模式等控制和状态位。每种异常模式下还存在SPS…

智密腾讯云直播组建--直播间API对象--ZhimiTRTCLiveRoom

函数名描述 register 注册SDK isLogined 是否登录SDK addEventListener 添加事件监听 removeEventListener 移除事件监听 inRoomHook 判断是否已经进入房间 getUserId 获取当前用户UserId getRoomId 获取当前房间Id getSDKConfig 获取SDK配置 login 登录SDK …

实现接口幂等性的8种解决方案

古语云&#xff1a;“一而再&#xff0c;再而三&#xff0c;其效不二” 俗语讲&#xff1a;被虐千百遍&#xff0c;依然如初恋 数学符号&#xff1a;f(f(f(x))) f(x) 即无论操作执行一次还是多次&#xff0c;其效果始终如一&#xff0c;不会有差异。这就是幂等性。 文章导读 什…

FPGA-PLL IP核的使用

1.前言 IP核是使用FPGA进行快速开发的一大法宝&#xff0c;FPGA有几个常用的IP核&#xff0c;如今天要写的PLL&#xff0c;即锁相环&#xff0c;还有FIFO&#xff0c;ROM等。熟练使用这些IP核&#xff0c;在一一些大型的项目中会省很多的精力&#xff0c;今天就通过一个实例来…

55 、mysql的存储引擎、备份恢复以及日志备份、恢复

一、数据库的存储引擎&#xff1a; 1.1、存储引擎的概念 概念&#xff1a;存储引擎&#xff0c;就是一种数据库存储数据的机制&#xff0c;索引的机制&#xff0c;索引的技巧&#xff0c;锁定水平。 存储的方式和存储的格式。 存储引擎也属于mysql当中的组件&#xff0c;实…

Linux挂载磁盘目录

一、背景 由于安装oracle数据库&#xff0c;磁盘空间不足&#xff0c;已经加了存储&#xff0c;但是没有挂载&#xff0c;需要将/dev/sdb全部挂载到/oracle目录下 [rootdatabase-001 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk …

分布式锁在AI大模型调用中的应用

1. 技术背景 AI大模型的调用往往是一个高资源消耗的操作&#xff0c;在实际应用中&#xff0c;为了防止恶意用户使用辅助工具频繁地调用这些大模型&#xff0c;占用大量服务器资源&#xff0c;影响其他用户的请求处理&#xff0c;降低系统的整体性能和服务质量&#xff0c;使用…

Android 记录锁屏的上层相关源码以及debug WindowManager

SettingsProvider frameworks/base/packages/SettingsProvider/res/values/defaults.xmldevice/rockchip/rk356x/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml //device的overlay会覆盖frameworks的SettingsProvider // 关于锁屏配置<inte…

HTTPServer改进思路2(mudou库核心思想融入)

mudou网络库思想理解 Reactor与多线程 服务器构建过程中&#xff0c;不仅仅使用一个Reactor&#xff0c;而是使用多个Reactor&#xff0c;每个Reactor执行自己专属的任务&#xff0c;从而提高响应效率。 首先Reactor是一种事件驱动处理模式&#xff0c;其主要通过IO多路复用…

对象存储:阿里云OSS、腾讯云COS与七牛云KODO的深度解析

随着云计算的普及&#xff0c;对象存储&#xff08;Object Storage Service&#xff09;作为数据存储领域的一项关键技术&#xff0c;因其可扩展性、高可用性和成本效益而受到广泛欢迎。本文将深入探讨阿里云的OSS、腾讯云的COS以及七牛云的KODO&#xff0c;分析这些服务的特点…

Linux实用操作三

文章目录 Linux实用操作三网络传输ping命令介绍&#xff1a;示例&#xff1a; wget命令介绍&#xff1a;示例&#xff1a; curl命令介绍&#xff1a;示例&#xff1a; 端口介绍&#xff1a;端口的划分&#xff1a;查看端口占用&#xff1a; 进程管理进程介绍&#xff1a;查看进…

基于WebGoat平台的SQL注入攻击

目录 引言 一、安装好JAVA 二、下载并运行WebGoat 三、注册并登录WebGoat 四、模拟攻击 1. 第九题 2. 第十题 3. 第十一题 4. 第十二题 5. 第十三题 五、思考体会 1. 举例说明SQL 注入攻击发生的原因。 2. 从信息的CIA 三要素&#xff08;机密性、完整性、可用性&…

代码随想录第五十九天 | 115.不同的子序列,583. 两个字符串的删除操作, 72. 编辑距离

115.不同的子序列 看完想法&#xff1a;这个题目只涉及删减&#xff0c;具体是 s 字符串的删减&#xff0c;t 不需要动。当s[ i ] t[j]时&#xff0c;有两种情况&#xff0c;可以用s[i]也可以不用&#xff0c;而s[i] !t[j]时只有一种情况&#xff0c;需要删除s[i]进一步比较。…

【MySQL-17】存储过程-[变量篇]详解-(系统变量&用户定义变量&局部变量)

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…

SpringBoot常用功能实现

1. 配置文件多环境配置 1.1 创建不同环境配置文件 文件名前缀和后缀为标准固定格式&#xff0c;不可以改变。 1.2 pom中加入文件配置 可以使用<activation>标签设置默认环境。 <profiles><profile><id>dev</id><activation><active…

内置华为视频终端API接口的中央控制系统

内置华为视频终端API接口的中控系统是一种高度集成化的智能控制系统&#xff0c;它通过将华为视频终端的控制功能集成到中控系统中&#xff0c;实现了对华为视频终端的远程控制和集中管理。以下是对该系统的详细介绍&#xff1a; 一、系统概述 该系统通过调用华为视频终端提供…