Qt开发基础(10)——定时器
有时候我们在设计的时候我们会用到定时器,让他每间隔一段时间就增加1.
如下:
我们在上个博客的基础上创建一个label_2实现定时器的功能。要实现他每间隔1s就会加1的操作。
我们在widget.cpp文件如下所示:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//启动定时器:参数1:时间间隔,单位是msstartTimer(1000);
}Widget::~Widget()
{delete ui;
}void Widget::timerEvent(QTimerEvent *)
{int num=1;//要把num的int类型转化为numberui->label_2->setText(QString::number(num++));
}
结果如下:
发现他一直是1就不变了。
发现每个一秒都走一下timerEvent()这个方法,所以每一次都重新定义一个int num=1.所以我们要提高它的作用域不让他变成局部变量可以加一个static
如下:
那如果我们需要定义两个定时器,一个是每间隔1s增加1次,一个是每隔两秒增加一次呢?
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//启动定时器:参数1:时间间隔,单位是msid1 = startTimer(1000);id2 = startTimer(2000);//定义定时器2:
}Widget::~Widget()
{delete ui;
}
void Widget::timerEvent(QTimerEvent *ev)
{if(ev->timerId()==id1){static int num=1;//要把num的int类型转化为numberui->label_2->setText(QString::number(num++));}else if(ev->timerId()==id2) {static int num2=1;ui->label_3->setText(QString::number(num2++));}
}
如果对于多个定时器我们就需要定义每个定时器的id。
对于每个定时器的id定义,我们在widget.h文件中定义了。
利用第二种方式QT自带的类定义定时器,实现每间隔0.5s增加一次。
提前需要导入import<QTimer>
#include "widget.h"
#include "ui_widget.h"
#include<QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//启动定时器:参数1:时间间隔,单位是msid1 = startTimer(1000);//定义定时器2:id2 = startTimer(2000);//定时器的第二种方式QTimer *timer = new QTimer(this);//启动定时器timer->start(500);connect(timer,&QTimer::timeout,[=](){static int num =1;//label_4每隔0.5s加1ui->label_4->setText(QString::number(num++));});
}Widget::~Widget()
{delete ui;
}void Widget::timerEvent(QTimerEvent *ev)
{if(ev->timerId()==id1){static int num=1;//要把num的int类型转化为numberui->label_2->setText(QString::number(num++));}else if(ev->timerId()==id2) {static int num2=1;ui->label_3->setText(QString::number(num2++));}}
如果我们想让定时器暂停以及再启动,我们可以点击一个button实现。
#include "widget.h"
#include "ui_widget.h"
#include<QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//启动定时器:参数1:时间间隔,单位是msid1 = startTimer(1000);//定义定时器2:id2 = startTimer(2000);//定时器的第二种方式QTimer *timer = new QTimer(this);//启动定时器timer->start(500);connect(timer,&QTimer::timeout,[=](){static int num =1;//label_4每隔0.5s加1ui->label_4->setText(QString::number(num++));});//点击暂停,实现停止定时器connect(ui->stop_btn,&QPushButton::clicked,[=](){timer->stop();});//点击实现启动定时器connect(ui->pushButton,&QPushButton::clicked,[=](){timer->start();});
}Widget::~Widget()
{delete ui;
}void Widget::timerEvent(QTimerEvent *ev)
{if(ev->timerId()==id1){static int num=1;//要把num的int类型转化为numberui->label_2->setText(QString::number(num++));}else if(ev->timerId()==id2) {static int num2=1;ui->label_3->setText(QString::number(num2++));}}
Qt开发基础(10)——定时器相关推荐
- STM32开发基础知识——定时器
目录 常见的定时器资源 系统嘀嗒定时器 Sys Tick 看门狗定时器watchDog 基本定时器 TIM6.TIM7 通用定时器 TIM2.TIM3.TIM4.TIM5 通用定时器的基本工作原理 定 ...
- 游戏开发基础(10)
第一节 3D类游戏设计3D光线投射游戏包括从高解析度图形到快速动画的许多技术.尽管3D场景在这些 不同的游戏中可能变化很大,玩游戏的方法和设计游戏的基本技术却是类似的.场景中较明显的组成部分包括生成的 ...
- Qt开发基础(7)——QImage与Mat之间的相互转换
Mat转QImage Mat mat=imread("c:/dev/test.jpg"); cvtColor(mat, mat, CV_BGR2RGB); QImage image ...
- 物联网国赛LORA模块开发基础教程(通用库)—定时器
LORA模块开发基础教程目录 物联网国赛LORA模块开发基础教程-开发环境配置 物联网国赛LORA模块开发基础教程-输出(LED) 物联网国赛LORA模块开发基础教程-输入(按键) 物联网国赛LORA ...
- 物联网国赛LORA模块开发基础教程(通用库)—传感器
LORA模块开发基础教程目录 物联网国赛LORA模块开发基础教程-开发环境配置 物联网国赛LORA模块开发基础教程-输出(LED) 物联网国赛LORA模块开发基础教程-输入(按键) 物联网国赛LORA ...
- 物联网国赛LORA模块开发基础教程(通用库)—串口收发
LORA模块开发基础教程目录 物联网国赛LORA模块开发基础教程-开发环境配置 物联网国赛LORA模块开发基础教程-输出(LED) 物联网国赛LORA模块开发基础教程-输入(按键) 物联网国赛LORA ...
- 物联网国赛LORA模块开发基础教程(通用库)—输出(LED)
LORA模块开发基础教程目录 物联网国赛LORA模块开发基础教程-开发环境配置 物联网国赛LORA模块开发基础教程-输出(LED) 物联网国赛LORA模块开发基础教程-输入(按键) 物联网国赛LORA ...
- 物联网国赛LORA模块开发基础教程(通用库)—OLED屏幕
LORA模块开发基础教程目录 物联网国赛LORA模块开发基础教程-开发环境配置 物联网国赛LORA模块开发基础教程-输出(LED) 物联网国赛LORA模块开发基础教程-输入(按键) 物联网国赛LORA ...
- 物联网国赛LORA模块开发基础教程(通用库)—输入(按键)
LORA模块开发基础教程目录 物联网国赛LORA模块开发基础教程-开发环境配置 物联网国赛LORA模块开发基础教程-输出(LED) 物联网国赛LORA模块开发基础教程-输入(按键) 物联网国赛LORA ...
最新文章
- JAVA 内存泄露详解(原因、例子及解决)
- PyCharm运行出现 Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run
- python滚动条自动向下,python tqdm 如何使得滚动条不上下滚动(保持一行内滚动)
- 分布式训练PyTorch 源码解读
- Jrebel 激活方式
- 软件详细设计说明书_软件测试的基本理论 笔记
- SQL SERVER 2008的top增强
- Django2.1简介及安装
- RabbitMQ中Confirm确认与Return返回消息详解(八)
- java 3dm_3dm游戏运行库合集安装包-游戏运行库合集安装包下载v3.0DM整理-西西软件下载...
- NeurIPS自动驾驶比赛结束,新加坡松下研究院申省梅团队夺冠...
- 深入浅出CChart 每日一课——快乐高四第二十课 七月流火,总复习之CChart多种编程模式
- Java程序员怎么规划五年职业生涯
- python爬取微信公众号文章(包含文章内容和图片)
- win10语言包在c盘哪里,win10系统通过卸载语言包释放c盘空间的操作方法
- 使用imagick将PDF转换成图片时报Fatal error: Uncaught exception 'ImagickException' with message 'FailedToExecute
- 本地搭建xxl-job服务及连接验证
- for/in 循环遍历对象的属性
- 奇点临近:人类文明延续
- 如何靠代码发家致富?——10种可以赚钱的途径
热门文章
- 关闭Flash广告弹窗( FF新鲜事 )
- 智能家居未来已来,可没做到这点便是“鸡肋”!
- bzoj4569[Scoi2016]萌萌哒
- Abnova 体外转录 mRNA工作流程和加帽方法介绍
- 为什么越来越喜欢用绍兴大带宽服务器
- “李四呢”这个名字挺独特的
- 关于组合数(二项系数)的一个递推公式
- 层次分析法 计算机程序,层次分析法(AHP)程序的设计
- Cross-Domain Activity Recognition Via Substructural Optimal Transport
- 你一定没见过的bug,app 不响应但是没有ANR