【QT】 QT定时器的使用

QT定时器的使用

  • 1. QTimer介绍
    • (1)QTimer的使用方法步骤
      • 示例代码1:定时器的启动和关闭
      • 现象:
      • 示例代码2:定时器每隔1s在标签上切换图片
      • 现象:
    • (2)实际开发的作用
  • 2.日期 QDate
    • (1)主要方法
  • 3.时间 QTime
    • (1)主要方法
      • 示例代码:
      • 现象:

1. QTimer介绍

QTimer是Qt中提供的一个定时器类,它可以定时触发一个信号,用于周期性执行一些操作。使用QTimer,可以轻松地实现定时器功能,如周期性地更新UI界面,周期性地执行一些任务等。

(1)QTimer的使用方法步骤

第一步:定义QTimer的对象
QTimer(QObject *parent = Q_NULLPTR)
参数:parent --this指针
第二步:设置超时时间(定时时间)
void setInterval(int msec)
参数:msec --》毫秒
第三步:启动定时器
void QTimer::start()
超时时间一旦到了,QTimer对象会自动触发timeout()信号,程序员只需要关联这个信号,在自定义的槽函数去实现自己的代码逻辑即可
第四步:关闭定时器
void QTimer::stop()

示例代码1:定时器的启动和关闭

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void onTimeout();void onStartTimer();void onStopTimer();private:Ui::Widget *ui;QTimer *myTimer;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 初始化定时器对象myTimer = new QTimer(this);// 设置定时时间(超时时间)myTimer->setInterval(1000);// 时间到了QTimer的对象会自动触发timeout信号connect(myTimer, SIGNAL(timeout()), this, SLOT(onTimeout()));// 关联启动定时器按钮的槽函数connect(ui->btn_start, SIGNAL(clicked()), this, SLOT(onStartTimer()));// 关联关闭定时器按钮的槽函数connect(ui->btn_close, SIGNAL(clicked()), this, SLOT(onStopTimer()));
}Widget::~Widget()
{delete ui;
}void Widget::onTimeout()
{qDebug()<<"hello world";
}void Widget::onStartTimer()
{qDebug()<<"StartTimer";myTimer->start();
}void Widget::onStopTimer()
{qDebug()<<"stopTimer";myTimer->stop();
}

现象:

在这里插入图片描述

示例代码2:定时器每隔1s在标签上切换图片

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_clicked();void fun();void on_pushButton_2_clicked();private:Ui::Widget *ui;QStringList piclist;QTimer *mytimer;int n; //图片的下标
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//把所有要显示的图片存放到字符串列表中n=0;piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\1.png");piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\2.png");piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\3.png");piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\4.png");piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\5.png");//初始化定时器mytimer=new QTimer(this);mytimer->setInterval(1000); //1秒connect(mytimer,SIGNAL(timeout()),this,SLOT(fun()));
}Widget::~Widget()
{delete ui;
}//启动定时器
void Widget::on_pushButton_clicked()
{mytimer->start();
}void Widget::fun()
{//每隔一秒钟在标签上切换显示图片QPixmap map(piclist.at(n));map.scaled(ui->label->width(),ui->label->height());ui->label->setScaledContents(true);ui->label->setPixmap(map);//由于只有5张(piclist.size())图片,n不可以无限制++if(n<piclist.size()-1)n++;elsen=0;
}void Widget::on_pushButton_2_clicked()
{mytimer->stop();
}

现象:

在这里插入图片描述

(2)实际开发的作用

定时器替代死循环/循环

2.日期 QDate

(1)主要方法

[static] QDate QDate::currentDate()
返回值:QDate的对象,表示当前系统的日期
int QDate::year() const
返回值:返回年
int QDate::month() const
返回值:返回月
int QDate::day() const
返回值:返回日
toString("yyyy-MM-dd")
把日期转换成字符串

3.时间 QTime

(1)主要方法

[static] QTime QTime::currentTime()
返回值:QTime对象,表示当前系统的时间
int QTime::hour() const
int QTime::minute() const
int QTime::second() const
toString("hh:mm:ss")
把时间转换成字符串

示例代码:

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();public slots:void onUpdateTime(void);private:Ui::Widget *ui;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTime>
#include <QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 1.实例化定时器对象QTimer *timer = new QTimer;// 2.定时器启动后会以指定的间隔时间发射timeout信号,关联对应的槽函数,执行对应的操作connect(timer, &QTimer::timeout, this, &Widget::onUpdateTime);// 3.启动定时器 1s定时timer->start(1000);
}Widget::~Widget()
{delete ui;
}void Widget::onUpdateTime()
{// 显示到标签上ui->label_2->setText(QTime::currentTime().toString());
}

现象:

在这里插入图片描述

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

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

相关文章

排序算法详细介绍对比及备考建议

文章目录 排序算法对比基本概要 算法逐一介绍1. 冒泡排序&#xff08;Bubble Sort&#xff09;2. 选择排序&#xff08;Selection Sort&#xff09;3. 插入排序&#xff08;Insertion Sort&#xff09;&#x1f31f;&#x1f31f;4. 希尔排序&#xff08;Shell Sort&#xff09…

Docker华为云创建私人镜像仓库

Docker华为云创建私人镜像仓库 在华为云官网的 产品 中搜索 容器镜像服务 &#xff1a; 或者在其他页面的搜索栏中搜索 容器镜像服务 &#xff1a; 进入到页面后&#xff0c;点击 创建组织 &#xff08;华为云的镜像仓库称为组织&#xff09;&#xff1a; 设置组织名字后&…

微信小程序-自定义toast

微信小程序-自定义toast 微信小程序原生的toast最多能显示两行文字。方案1:方案2 微信小程序原生的toast最多能显示两行文字。 有时候并不能满足业务需求。所以我们需要使用第三方或者自定义。 方案1: 第三方vant-toast 微信小程序下载引入第三方vant之后。 在需要使用的页面…

安卓手游逆向

一、环境安装 1.1、安装Java环境 1.2、安装SDK环境 1.3、安装NDK环境 二、APK 2.1、文件结构 2.2、打包流程 2.3、安装流程 应用安装涉及目录: system/app ----->系统自带的应用程序,获得adb root权限才能删除。 data/app ------->用户程序安装的目录,安装…

VSCode Continue 扩展踩坑记录

Trae 是一款很优秀的 AI 开发工具&#xff0c;但目前支持的平台还较少&#xff0c;比如不支持 Win7&#xff0c;不支持 Linux&#xff0c;为了在这些平台上进行开发&#xff0c;我需要寻找一个替代品。经过网上搜索&#xff0c;选择了 VSCode Continue 扩展&#xff0c;但在使…

Elasticsearch:AI 助理 - 从通才到专才

作者&#xff1a;来自 Elastic Thorben Jndling 在 AI 世界中&#xff0c;关于构建针对特定领域定制的大型语言模型&#xff08;large language models - LLM&#xff09;的话题备受关注 —— 不论是为了更好的安全性、上下文理解、专业能力&#xff0c;还是更高的准确率。这个…

【ARM】MDK烧录提示Error:failed to execute‘ ‘

1、 文档目标 解决在烧录程序的时候&#xff0c;因为选择了错误的烧录方式导致下载失败的情况。 2、 问题场景 在烧录程序的时候出现了提示&#xff1a;“Error&#xff1a;failed to execute ’ ”&#xff08;如图2-1&#xff09;。检测Target->Debug配置发现没有问题&a…

系统分析师(六)-- 计算机网络

概述 TCP/IP 协议族 DNS DHCP 网络规划与设计 逻辑网络设计 物理网络设计 题目 层次化网络设计 网络冗余设计 综合布线系统 IP地址 网络接入技术 其他网络技术应用 物联网

优化运营、降低成本、提高服务质量的智慧物流开源了

智慧物流视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本可通过边缘计算技术…

从One-Hot到TF-IDF:NLP词向量演进解析与业务实战指南(一)

从One-Hot到TF-IDF&#xff1a;词向量演进之路 开场白&#xff1a; 想象一下&#xff0c;你试图用Excel表格分析《红楼梦》的情感倾向——每个字词都是孤立的单元格&#xff0c;计算机看到的只有冰冷的0和1&#xff0c;而“黛玉葬花”的凄美意境却消失得无影无踪。这就是NLP工…

2. kubernetes操作概览

以下是 Kubernetes 的核心操作概览&#xff0c;涵盖常用命令、资源管理和典型场景的操作流程&#xff1a; 1. 核心操作工具 (1) kubectl 命令行工具 Kubernetes 的所有操作均通过 kubectl 实现&#xff0c;常用命令如下&#xff1a; 操作类型命令示例作用说明查看资源状态ku…

从Ampere到Hopper:GPU架构演进对AI模型训练的颠覆性影响

一、GPU架构演进的底层逻辑 AI大模型训练效率的提升始终与GPU架构的迭代深度绑定。从Ampere到Hopper的演进路径中&#xff0c;英伟达通过‌张量核心升级‌、‌显存架构优化‌、‌计算范式革新‌三大技术路线&#xff0c;将LLM&#xff08;大语言模型&#xff09;训练效率提升至…

p2p的发展

PCDN&#xff08;P2P内容分发网络&#xff09;行业目前处于快速发展阶段&#xff0c;面临机遇与挑战并存的局面。 一、发展机遇 技术融合推动 边缘计算与5G普及&#xff1a;5G的高带宽、低延迟特性与边缘计算技术结合&#xff0c;显著提升PCDN性能&#xff0c;降低延迟&#x…

计算机视觉与深度学习 | 视觉里程计(Visual Odometry, VO)学习思路总结

视觉里程计(Visual Odometry, VO)学习思路总结 视觉里程计(VO)是通过摄像头捕获的图像序列估计相机运动轨迹的技术,广泛应用于机器人、自动驾驶和增强现实等领域。以下是一个系统的学习路径,涵盖基础理论、核心算法、工具及实践建议:一、基础理论与数学准备 核心数学工具…

Ubuntu 24.04 中文输入法安装

搜狗输入法&#xff0c;在Ubuntu 24.04上使用失败&#xff0c;安装教程如下 https://shurufa.sogou.com/linux/guide 出现问题的情况&#xff0c;是这个帖子里描述的&#xff1a; https://forum.ubuntu.org.cn/viewtopic.php?t493893 后面通过google拼音输入法解决了&#x…

阿里云 MSE Nacos 发布全新“安全防护”模块,简化安全配置,提升数据保护

作者&#xff1a;张文浩 阿里云在其微服务引擎&#xff08;MSE&#xff09;注册配置中心 Nacos 上正式推出全新“安全防护”功能模块&#xff0c;旨在帮助企业用户有效管理安全状态和降低开启安全相关功能的学习成本&#xff0c;提升微服务架构的安全性。首期推出的“安全防护…

C#核心(23)StringBuilder

前言 我们先前已经了解了String的一些基本规则和常见的用法,今天就来讲一下和string有所区别的StringBulider。 在 C# 中,StringBuilder 类是一个非常有用的工具,特别是在需要频繁修改字符串时。与 String 类型不同,StringBuilder 类提供了一种动态字符串,可以在不创建新…

活动图与流程图的区别与联系:深入理解两种建模工具

目录 前言1. 活动图概述1.1 活动图的定义1.2 活动图的基本构成要素1.3 活动图的应用场景 2. 流程图概述2.1 流程图的定义2.2 流程图的基本构成要素2.3 流程图的应用场景 3. 活动图与流程图的联系4. 活动图与流程图的区别4.1 所属体系不同4.2 表达能力差异4.3 使用目的与语境4.4…

idea运行springboot项目,运行时不能生成target

1&#xff0c;问题 项目本来运行正常&#xff0c;突然重启项目运行时&#xff0c;提醒主类找不到&#xff0c;发现target未生成 2&#xff0c;解决办法 查看.idea里面的文件&#xff0c;正常是下面这样的 如果有缺失&#xff0c;删除.idea里面的文件&#xff0c;清除idea缓…

【unity游戏开发——Animator动画】Animator动画状态机复用——重写动画控制器 Animator Override Controller

注意&#xff1a;考虑到UGUI的内容比较多&#xff0c;我将UGUI的内容分开&#xff0c;并全部整合放在【unity游戏开发——Animator动画】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、状态机复用是什么&#xff1f;二、实战专栏推荐完结 一、状态机复…