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

【Qt】定时器--滚动相册

定时器用于实现定时触发操作,常用于周期性执行任务、延时处理等场景。

定时器可分为timerEventQtimer两类。

timerEvent定时器事件

timerEvent(QTimerEvent *event)主要处理对象的ID

使用步骤

  • startTimer()//返回定时器编号=开始(定时时间)

  • timerEvent()//事件

  • killTimer()//结束(要结束的定时器ID)

使用例子(图片播放)

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#define TIMEOUT 1*1000
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);virtual void timerEvent(QTimerEvent *event);//定时事件(在widget.cpp中实现)~Widget();private slots:void on_staretButton_clicked();void on_stopButton_clicked();private:Ui::Widget *ui;int myTimerID;//每个定时器有一个自己的编号int picID;//图片名字
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "./ui_widget.h"Widget::Widget(QWidget *parent):QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//初始化刚开始就要得到一张图片picID = 2;//下一个图片QPixmap pix("D:\\Item\\QtProject\\objectTimer\\pic\\1.png");ui->label->setPixmap(pix);}Widget::~Widget()
{delete ui;
}void Widget::on_staretButton_clicked()
{//开启定时器,返回定时器编号myTimerID = this->startTimer(TIMEOUT);//记录的超时时间
}void Widget::timerEvent(QTimerEvent *event)
{if(event->timerId()!=myTimerID)return;//如果不是开始的这个计时器id就不继续功能//获取图片路径和名称QString path("D:\\Item\\QtProject\\objectTimer\\pic\\");path +=QString::number(picID);path +=".png";QPixmap pix(path);ui->label->setPixmap(pix);//显示picID++;//找到下一个图片显示if(picID==5)//一共4张图片picID = 1;//循环完重新到1;
}void Widget::on_stopButton_clicked()
{//杀死指定定时器this->killTimer(myTimerID);
}

Qtimer

头文件:<QTimer>

支持信号与槽机制

使用步骤

  • QTimer *timer;//创建一个定时器对象
  • connect(timer, &QTimer::timeout, this, &Widget::timeoutSlot);//连接信号与槽
  •  timer->start(时间);
  • 处理的槽函数
  •  timer->stop();
  • QTimer::singleShot(时间,接收者(this),槽函数);//发出信号

使用例子(图片播放)

widget.h

#ifndef WIDGET_H
#define WIDGET_H
#define TIMEOUT 1000#include <QWidget>
#include<QTimer>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_startButton_clicked();//槽函数必须写在slots下面void timeoutSlot();void on_stopButton_clicked();void on_pushButton_clicked();private:Ui::Widget *ui;QTimer *timer;//创建一个定时器对象int picID;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "./ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);picID = 2;//创建定时器对象timer = new QTimer;//用QImage对象显示图片QImage img;img.load("D:\\Item\\QtProject\\objectTimer\\pic\\1.png");//标签里面显示setPixmapui->label->setPixmap(QPixmap::fromImage(img));//定时器时间到,发出timeout信号,connect处理(发出者,发出信号,接收者,处理方法)connect(timer, &QTimer::timeout, this, &Widget::timeoutSlot);
}Widget::~Widget()
{delete ui;
}void Widget::on_startButton_clicked()
{//开始定时器timer->start(TIMEOUT);
}void Widget::timeoutSlot()
{QString path("D:\\Item\\QtProject\\objectTimer\\pic\\");path += QString::number(picID);path += ".png";QImage img;img.load(path);ui->label->setPixmap(QPixmap::fromImage(img));picID++;if(picID==5)picID = 1;
}void Widget::on_stopButton_clicked()
{timer->stop();
}void Widget::on_pushButton_clicked()
{//singleShot(时间,接收者,槽函数)QTimer::singleShot(1000,this,SLOT(timeoutSlot()));
}

两种方式的对比

特性QTimer 类定时器事件(timerEvent)
使用复杂度简单(信号槽机制)稍复杂(需管理 ID 和事件)
多定时器管理方便(每个 QTimer 独立)需通过 ID 手动区分
功能丰富度支持暂停、动态修改周期等功能基础,需手动实现扩展逻辑
适用场景大多数定时任务轻量级场景或需要精细控制的情况
http://www.dtcms.com/a/512815.html

相关文章:

  • Qt 与 VS Studio 结合使用
  • 咸宁做网站的公司那家便宜闵行网站制作哪里有
  • 高压输电线背景下无人机检测输电线和周围树木以及计算两者之间的距离
  • MySQL锁机制详解
  • 用户网站模板厦门唯一官方网站
  • 介绍化工项目建设和招聘的网站做网站app要注册哪类商标
  • milvus容器restart不成功,但docker仍在running问题排查
  • 女的和男的做那个视频网站广西网站建设公司电话
  • 织梦网站首页模板更换重要新闻头条
  • ABAP 静态代码分析 - 语法分析
  • 【VPX315】基于 3U VPX 总线架构的 JFMQL100TAI + FT-M6678 智能信号处理平台
  • 建个什么网站赚钱大连发布: 大连发布
  • 南京网站建设工作室企业网站推广是不是必要的
  • 网站制作html代码网站开发工作量
  • Sprintf Boot 之 Nacos 配置中心实践(spring.config.import=optional:nacos:)
  • 东莞行业网站建设中国电子商务中心官网
  • 山东住房和城乡建设厅网站登陆怎么打广告宣传自己的产品
  • 网站建设公司营业执照图片免费图片在线制作
  • 参加科学大会(dijkstra(堆优化版))
  • 百度上如何做优化网站wordpress 目录权限设置
  • 涪陵建设工程信息网站除了红动中国还有哪些设计网站
  • JVM虚拟机入门到实战(持续更新中)
  • 苏州网站建设与网络营销网络销售的好处和意义
  • 免费wordpress主题分享seo网站建站公司的主页
  • 外贸网站宗旨网站建设包括哪些方面
  • 什么外设选择开漏,什么外设选择推挽?
  • HTML 标签及推荐嵌套结构
  • 优先算法专题十二——栈
  • Flare 少样本学习嵌入式agent
  • Windows 系统下 n8n 自动化工具的完整部署指南