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

Qt 定时器与定时事件

一、定时器

在头文件.h中进行声明:

private slots:void timeOut(); // 定时器超时槽函数

在.cpp中进行实现相应的功能:

// 构造函数
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);// 创建一个新的定时器QTimer *timer = new QTimer(this);// 设置定时器1秒钟超时timer->setInterval(100);        // 关联定时器的超时信号到槽上connect(timer, SIGNAL(timeout()), this, SLOT(timeOut()));// 开始计时timer->start();      
}// 定时器超时槽函数
void Widget::timeOut()
{QTime time = QTime::currentTime();      // 获取当前时间QString text = time.toString("hh:mm:ss");  // 转换为字符串if((time.second() % 2) == 0){// 每隔一秒就将“:”显示为空格text[2]=' ';text[5]=' ';}qDebug() << text;
}

这里在构造函数中开启了一个 1 秒的定时器,当它溢出时就会发射 timeout() 信号,这时就会执行我们的定时器溢出处理函数。在槽里我们获取了当前的时间,并且将它转换为可以显示的字符串。
“应用程序输出”窗口输出如下:

"15:36:23"
"15 36 24"
"15:36:25"
"15 36 26"

如果我们想让这个计时器只计时一次,那么必须使用void setSingleShot(bool singleShot)函数

QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(timeOut()));
timer->setsetSingleShot(true)
timer->start(60000);

这样计时器只会倒计时 1 分钟,然后结束。

二、定时事件

QTimerEvent 类用来描述一个定时器事件。对于一个 QObject 的子类,只需要使用 int QObject::startTimer ( int interval) 函数来开启一个定时器,这个函数需要输人一个以毫秒为单位的整数作为参数来表明设定的时间,它返回一个整型编号来代表这个定时器。当定时器溢出时就可以在 timerEvent() 函数中获取该定时器的编号来进行相关操作。
使用 QTimerEvent 的 timerId() 函数来获取定时器的编号,然后判断是哪一个定时器并分别进行不同的操作。
在头文件.h中进行声明:

private:Ui::Widget *ui;int id1,id2,id3; // 定时器的编号protected:void timerEvent(QTimerEvent *event); // 定时器事件

在.cpp中进行实现相应的功能:

// 构造函数
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);id1 = startTimer(1000); // 开启一个1秒定时器,并返回其idid2 = startTimer(2000);id3 = startTimer(4000);
}// 定时器事件
void Widget::timerEvent(QTimerEvent *event)
{// 1秒钟时间到,则定时器1溢出if (event->timerId() == id1){qDebug()<<"timer1";}else if(event->timerId() == id2){qDebug()<<"timer2";}else if (event->timerId() == id3){qDebug()<<"timer3";}
}

应用程序输出”窗口输出如下:

timer1
timer1
timer2
timer1
timer1
timer2
timer3

相关文章:

Qt 定时器与定时事件

一、定时器 在头文件.h中进行声明&#xff1a; private slots:void timeOut(); // 定时器超时槽函数在.cpp中进行实现相应的功能&#xff1a; // 构造函数 Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);// 创建一个新的定时…...

《UNUX环境高级编程》(1)UNIX基础

1、引言 2、UNIX体系结构 操作系统 一种软件&#xff0c;控制计算机硬件资源&#xff0c;提供程序运行环境。操作系统包含了内核和一些其他软件&#xff08;如shell、公用函数库、应用程序等&#xff09;。例如Linux就是GNU操作系统的内核&#xff0c;因此也称为GNU/Linux操作…...

MATLAB 入门之旅摘要

matlab官方基础课程&#xff0c;重温或者入门都是不错的选择。 MATLAB 入门之旅 MATLAB 入门之旅 | 自定进度在线课程 - MATLAB & Simulink 基本语法 示例说明x pi使用等号 () 创建变量。 左侧 (x) 是变量的名称&#xff0c;其值为右侧 (pi) 的值。y sin(-5)您可以使用括…...

chatgpt赋能python:Python小数运算:解决精度问题的最佳实践

Python小数运算&#xff1a;解决精度问题的最佳实践 在进行小数运算时&#xff0c;Python是一种十分常用的语言&#xff0c;但在进行小数运算时&#xff0c;由于二进制和十进制之间的转换不完全&#xff0c;可能会导致一些精度问题。为了避免这些问题&#xff0c;让我们一起了…...

Linux 安装Docker完整教程(六)

文章目录 背景一、Docker简介二、docker desktop 和 docker engin 区别三、Linux 安装Docker1. 安装docker的前置条件&#xff1a;2. 查看Docker版本3. 检查是否安装过Docker4. Docker自动化安装 (不想自带化安装的可跳过本步骤&#xff0c;选择手动安装)5. Docker手动安装&…...

手机连接adb 相关问题汇总

目录 关于端口占用问题1 关于修改adb 端口配置问题2 方法3 方法4 关于端口占用问题1 转载链接&#xff1a;https://www.jianshu.com/p/902a89b06271 报错信息&#xff1a; error: no device/emulators found error: device still connecting 解决方案&#xff1a; 重启…...

MySQL数据相关操作

一、介绍 MySQL数据操作&#xff1a; DML 在MySQL管理软件中&#xff0c;可以通过SQL语句中的DML语言来实现数据的操作&#xff0c;包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及。 二、插入数据INSERT 1. 插入完整…...

2023年5月青少年软件编程(Python) 等级考试试卷(四级)

青少年软件编程&#xff08;Python&#xff09; 等级考试试卷&#xff08;四级&#xff09;2023.6 分数&#xff1a; 100 题数&#xff1a; 38 一、 单选题(共 25 题&#xff0c; 共 50 分) 1.下列程序段的运行结果是&#xff1f; &#xff08; &#xff09; def s(n): if n0: …...

Python selenium自动化测试模型图解

1、线性测试 优势&#xff1a;每一个脚本都是完整独立的&#xff0c;每一个脚本对应一个测试用例 缺点&#xff1a;开发成本高&#xff0c;会有重复操作重复脚本&#xff1b;维护成本也高&#xff0c;修改重复操作的脚本时&#xff0c;要逐一进行修改。 2、模块化驱动测试 …...

【详解】篮球记分牌硬件及代码

篮球记分牌设计 1 系统设计1.1 设计任务 1.2 性能指标要求1.2 设计思路及设计框图1.2.1设计思路1.2.2总体设计框图1.2.3电路原理图1.2.3 PCB布线图 2 主要程序模块的设计及原理2.1 外部中断0 2.2 菜单2.3 两队比分及两队犯规次数显示及修改2.3.1选择功能2.3.2修改功能2.3.3显示…...

FreeRTOS实时操作系统(二)系统文件代码学习

文章目录 前言系统配置任务创建任务创建删除实践 前言 接着学习正点原子的FreeRTOS教程&#xff0c;涉及到一些详细的系统内文件代码 系统配置 可以通过各种的宏定义来实现我们自己的RTOS配置&#xff08;在FreeRTOSconfig.h&#xff09; “INCLUDE”&#xff1a;配置API函数…...

分布式驱动电动汽车定速巡航控制

目录 前言 1. 电机模型 1.1电机数学模型 1.2 电机传递函数模型 2. 控制器设计...

如何启动和关闭分布式集群

分布式集群是由多个节点组成的系统&#xff0c;可以提供高性能、高可用、高扩展的数据处理能力。本文介绍如何启动和关闭一个包含hadoop、zookeeper、hbase和spark的分布式集群。 目录 启动顺序 关闭顺序 启动和关闭hadoop 启动hadoop 关闭hadoop 查看网页 启动和关闭z…...

WLAN基本概述及简单组网配置

WLAN概述 WLAN即Wireless LAN(无线局域网),是指通过无线技术构建的无线局域网络。WLAN广义上是指以无线电波、激光、红外线等无线信号来代替有线局域网中的部分或全部传输介质所构成的网络。 家庭WLAN产品: 家庭Wi-Fi路由器:通过把有线网络信号转换成无线信号,供家庭电…...

响应式Web设计单元测试

响应式Web设计单元测试 一. 单选题 &#xff08;共8题&#xff0c;40.0分&#xff09;二. 多选题 &#xff08;共5题&#xff0c;25.0分&#xff09;三. 判断题 &#xff08;共7题&#xff0c;35.0分&#xff09; 一. 单选题 &#xff08;共8题&#xff0c;40.0分&#xff09; …...

linux计划任务管理

1. crond计划任务概述 什么是计划任务&#xff0c;计划任务类似于我们平时生活中的闹钟。 在Linux系统的计划任务服务crond可以满足周期性执行任务的需求。 crond进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据 Schedule on…...

研一,有点迷茫。

作者&#xff1a;阿秀 校招八股文学习网站&#xff1a;https://interviewguide.cn 这是阿秀的第「277」篇原创 小伙伴们大家好&#xff0c;我是阿秀。 最近回答了不少大一大二研一在读的学习圈中学弟学妹的咨询问题&#xff0c;基本都是计算机学习、进度、疑惑等等相关的问题&a…...

【新版】系统架构设计师 - 软件工程

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 软件工程考点摘要软件工程概述软件能力成熟度模型软件过程模型瀑布模型原型化模型增量模型螺旋模型喷泉模型V模型迭代与增量的概念CBSD基于构件的模型&#xff08;构件组装模型/基于构件的软件开发…...

html实现好看的个人介绍,个人主页模板3(附源码)

文章目录 1.设计来源1.1 主界面1.2 关于我界面1.3 教育成就界面1.4 项目演示界面1.5 联系我界面 2.效果和源码2.1 动态效果2.2 源代码2.2 源代码目录 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/131263195 …...

某大厂工作3年,被劣驱良了。。。

最近在知乎上看到一个问题&#xff1a;编程界的劣驱良现象有哪些&#xff1f; 要想回答这个问题&#xff0c;首先要定义清楚&#xff0c;什么是「劣」什么是「良」&#xff1f; 如果你认为编程技术牛x就是「良」&#xff0c;编程技术差就是「劣」&#xff0c;那可以清楚的回答…...

Keil MDK Debug 命令行常用命令

适用&#xff1a;Keil MDK-ARM (uVision5)&#xff0c;进入 Debug 模式后&#xff0c;下方的 Command 窗口或 View → Command Window 打开。一、断点管理 (BKPT / BS / BL) 硬件断点 (Breakpoint Set) BS <func> ; 在函数入口设断点 BS <func&…...

Python开发者三步完成Taotoken OpenAI兼容接口的接入与调用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Python开发者三步完成Taotoken OpenAI兼容接口的接入与调用 对于习惯使用OpenAI官方Python SDK的开发者来说&#xff0c;接入Taoto…...

手机上的Linux:用Termux 0.118.0打造Python 3.10.4爬虫环境,实测下载‘拷贝漫画’全流程

在安卓手机上构建Python爬虫环境&#xff1a;Termux实战指南 你是否遇到过这样的场景&#xff1a;在地铁上突然想到一个绝妙的爬虫点子&#xff0c;但手边只有一部手机&#xff1f;或者想在平板上直接下载漫画却苦于没有合适的工具&#xff1f;Termux正是解决这些痛点的神器。这…...

Jetson Nano到手第一步:保姆级系统烧录与基础环境配置(避坑指南)

Jetson Nano开箱实战&#xff1a;从零构建AI开发环境的完整指南 刚拆封的Jetson Nano开发板躺在桌面上&#xff0c;这块仅有信用卡大小的设备却蕴含着强大的边缘计算能力。对于初次接触嵌入式AI开发的工程师而言&#xff0c;如何正确完成系统初始化往往成为第一个技术门槛。本文…...

避坑指南:ESP32 ADC采样时这些操作会让数据‘丢帧’(WiFi冲突、看门狗、串口打印)

ESP32 ADC采样稳定性实战&#xff1a;规避数据丢失的6个关键策略 在物联网和嵌入式开发领域&#xff0c;ESP32因其出色的无线连接能力和丰富的外设资源成为热门选择。但当开发者将其ADC&#xff08;模数转换器&#xff09;功能用于高精度数据采集时&#xff0c;常常会遇到采样数…...

基于MCP协议的能源转型智能体:架构、实现与应用场景解析

1. 项目概述&#xff1a;能源转型智能体的“大脑”与“手脚”最近在做一个挺有意思的项目&#xff0c;核心是围绕一个叫apifyforge/energy-transition-intelligence-mcp的智能体展开的。这名字听起来有点拗口&#xff0c;拆开来看&#xff0c;“apifyforge”是发布者&#xff0…...

基于ClamAV的容器化文件安全扫描服务:clambot架构与实战

1. 项目概述&#xff1a;一个守护文件安全的“哨兵” 如果你在服务器运维、文件共享系统或者邮件网关的岗位上工作过&#xff0c;那么对恶意文件、病毒、木马的防范一定是你日常工作的重中之重。手动检查&#xff1f;效率太低且容易遗漏。依赖单一杀毒软件&#xff1f;误报和性…...

免费开源的Windows桌面分区工具:NoFences终极指南

免费开源的Windows桌面分区工具&#xff1a;NoFences终极指南 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否厌倦了杂乱的Windows桌面&#xff1f;每天在混乱的图标中…...

AI智能体安全防护实战:基于AgentGuard构建可控Agent安全护栏

1. 项目概述&#xff1a;当AI智能体需要“安全护栏”最近在折腾AI智能体&#xff08;Agent&#xff09;的开发&#xff0c;一个绕不开的痛点就是“安全性”。我们费尽心思调教出一个能自主规划、调用工具、执行任务的智能体&#xff0c;结果它可能在用户一个刁钻的提问下&#…...

LRCGET:一键批量下载离线音乐库同步歌词的智能解决方案

LRCGET&#xff1a;一键批量下载离线音乐库同步歌词的智能解决方案 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 你是否曾为数千首本地音乐文件寻找同…...