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

QT定时器QObiect/QTimer

QT定时器

一、QObiect:

startTimer ----------- killTimer

电子相册,利用定时器轮播图片

#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:\\CandCPP\\Picture\\1.jpg");
    ui->label->setPixmap(pix);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_startButton_clicked()
{
    //开启定时器,返回定时器编号
    myTimerId = this->startTimer(TIMEOUT);
}

void Widget::timerEvent(QTimerEvent *event)
{
    if (event->timerId() != myTimerId)
        return;

    QString path("D:\\CandCPP\\Picture\\");
    path += QString::number(picID);
    path += ".jpg";

    QPixmap pix(path);
    ui->label->setPixmap(pix);

    picID++;
    if (picID>5)
        picID = 1;
}

void Widget::on_stopButton_clicked()
{
    this->killTimer(myTimerId);
}

初始化:
构造函数 (Widget::Widget):
初始化 picID 为 2
加载并显示第一张图片 1.jpg 到 label 上

槽函数:
on_startButton_clicked:
启动定时器,间隔由 TIMEOUT 决定。
保存定时器 ID 到 myTimerId。

timerEvent:
检查事件的定时器 ID 是否与 myTimerId 匹配
构建下一张图片的路径
加载并显示图片
更新 picID,循环显示 1.jpg 到 5.jpg

on_stopButton_clicked:
停止定时器,停止图片轮播
在这里插入图片描述
在这里插入图片描述

二、QTimer:

QTimer类提供了定时器信号和单触发定时器

创建一个QTimer,使用start ()来开始并且把它的timeout ()连接到适当的槽。当这段时间过去了,它将会发射timeout()信号

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    timer = new QTimer;
    picID = 2;

    QImage img;
    img.load("D:\\CandCPP\\Picture\\1.jpg");
    ui->label->setPixmap(QPixmap::fromImage(img));

    //定时器时间到,发出timeout信号
    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:\\CandCPP\\Picture\\");
    path += QString::number(picID);
    path += ".jpg";

    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_singleButton_clicked()
{
    QTimer::singleShot(1000, this, SLOT(timeoutSlot()));
}

多了单次触发


http://www.kler.cn/a/295129.html

相关文章:

  • 【机器学习】机器学习中用到的高等数学知识-3.微积分 (Calculus)
  • 【go从零单排】Rate Limiting限流
  • 项目模块详细说明
  • 国标GB28181视频平台EasyCVR私有化部署视频平台对接监控录像机NVR时,录像机“资源不足”是什么原因?
  • LeetCode【0018】四数之和
  • springboot参数校验
  • 【环境领域EI稳定 I 院士主讲】第九届能源与环境研究进展国际学术会议(ICAEER 2024)
  • 【H2O2|全栈】关于HTML(1)认识HTML
  • 智能交通系统如何利用大数据、云计算和物联网技术优化交通流量、减少拥堵|智能交通系统|大数据|云计算|物联网|交通流量优化|减少拥堵
  • 记录一个前端学习小组的收集的模版
  • 在VB.net中,如何把20240906转化成日期格式
  • SSL和HTTPS是一样的吗?
  • 解决ruoyi框架中使用pagehelper插件分页查询后对数据进行对象转换后失效问题
  • 24程序员转行,首选为什么是它?
  • 深度学习TensorFlow框架
  • 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节
  • 场外个股期权雪球结构期权产品原理
  • Linux 使用rsync拷贝文件
  • 【Linux】读者写者问题与读写锁
  • 探索大语言模型在心理健康状态评估的应用
  • 【线性代数】正定矩阵,二次型函数
  • IOS 21 发现界面(UITableView)单曲列表(UITableView)实现
  • Java项目: 基于SpringBoot+mybatis+maven学科竞赛管理系统(含源码+数据库+毕业论文)
  • 0x06 记录一次挖src的经历(xss漏洞)
  • 【机器人工具箱Robotics Toolbox开发笔记(十六)】SCARA机器人关节空间轨迹规划仿真实例
  • 分类与回归的区别