QT定时器QObiect/QTimer

news2024/9/21 12:31:39

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.coloradmin.cn/o/2114025.html

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

相关文章

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

[SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程

题目来源 NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。https://www.nssctf.cn/problem [SWPUCTF 2021 新生赛]gift_F12 这个题目简单打开后是一个网页 我们一般按F12或者是右键查…

AWTK 如何用 OpenGL 绘制图形

在有 GPU 的情况下,AWTK 使用 OpenGL 绘制图形。但是你会发现,如果自己在 paint 事件中使用 OpenGL 绘制图形,图形是无法显示的。原因是,AWTK 采用 nanovg 绘制图形,而 nanovg 并不是在绘制时立即执行的,而…

Visual Studio Code:让你的工作效率飞升的秘密武器

在现代软件开发环境中,效率已成为每个开发者追求的目标。而在众多编程工具中,Visual Studio Code(简称VS Code)凭借其强大的功能、轻量的界面和高度的可定制性,成为了全球开发者的首选。无论你是编写前端代码、后端服务…

分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

1:MSSQL SQL语法篇: BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ] FROM data_file [ WITH ( [ [ , ] BATCHSIZE batch_size ] [ [ , ] CHECK_CONSTRAINTS …

WIN11 ESP32 IDF + VSCODE 环境搭建[教程向]

前言 目录 前言 安装ESP32-IDF VSCODE插件安装 编译测试 很多时候我们想学习一门新的技能,需要使用全新的开发环境,很多时候我们会在安装环境这个环节卡住很久,这里简单介绍一下ESP32VSCODE环境搭建。 安装ESP32-IDF https://dl.espre…

概率DP (由一道绿题引起的若干问题。目前为一些老题,蒟蒻的尝试学习1.0)

概率DP: 利用动态规划去解决 概率 期望 的题目。 概率DP 求概率(采用顺推) 从 初始状态推向结果,同一般的DP类似,只是经历了概率论知识的包装。 老题: 添加链接描述 题意: 袋子里有w只白鼠&am…

热度DA!《黑神话:悟空》专题合集|4K电影及天命人资料免费领取!

热度DA!《黑神话:悟空》专题合集|4K电影及天命人资料免费领取! 前言《黑神话:悟空》专题合集 前言 《黑神话:悟空》正式全球解锁上线,这一中国首款 “3A” 游戏的发布,瞬间点燃了无…

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形…

【Netty】netty中都是用了哪些设计模式

对于工程师来说,掌握并理解运用设计模式,是非常重要的,但是除了学习基本的概念之外,需要结合优秀的中间件、框架源码学习其中的优秀软件设计,这样才能以不变应万变。 单例模式 单例模式解决的对象的唯一性&#xff0…

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人…

B端产品经理的流程设计思维

回首入行产品经理也已多年,做的项目也由C到B,由前到后都已涉及,辗转跨行仍觉互联网学海无涯,还是需要保持输出。思前想后还是决定聊一聊在过往服务多家大型集团的工作经历中十分重要,但却普遍不被视为产品经理必备能力…

Spring-循环依赖

预备知识 循环依赖开关(方法) - AbstractAutowireCapableBeanFactory#setAllowCircularReferences 单例工程(属性) - DefaultSingletonBeanRegistry#singletonFactories获取早期未处理Bean (方法) - AbstractAutowireCapableBeanFactory#getEarlyBeanReference早期未处理Bean…

项目实战系列: 家居购项目 第一部分

家居购项目 🐀Java后端经典三层架构🐇MVC模型🐇开发环境搭建🐇会员注册🍉前端JS校验🍉后端实现 🐇会员登陆 🐀Java后端经典三层架构 分层对应包说明web层com.zzw.furns.web/servlet/…

【PyQt6 应用程序】直播素材视频循环生成

在现代内容创作中,视频素材的生成和处理变得越来越重要,尤其是在直播、视频剪辑等场景中。对于需要长期、持续生成内容的用户来说,如何有效地利用现有的视频素材,生成长时间播放且无明显重复感的视频片段,是一个亟待解决的问题。 本教程将详细讲解如何使用 PyQt6 来实现一…

tabBar设置底部菜单选项以及iconfont图标

tabBartabBar属性:设置底部 tab 的表现 ​ ​ ​ ​ 首先在pages.json页面写一个tabBar对象,里面放入list对象数组,里面至少要有2个、最多5个 tab, 如果只有一个tab的话,H5(浏览器)依然可以显示底部有一个导航栏,如果没有,需要重启后才有,小程序则报错,只有2个以上才可以…

欧拉系统安装 NVIDIA 显卡驱动

1、安装显卡驱动编译工具 yum install gcc make kernel-devel 2、安装显卡驱动依赖包 yum install vulkan-loader 可选安装项,不安装该系统包时会出现以下警告提示,但不影响安装和使用。 3、安装 NVIDIA GPU 驱动 生产环境建议选择 .run 格式的驱动…

Java线程池和Executor框架-面试与分析

线程池 什么是线程池?为什么要用线程池? 在Java并发框架中,线程池时使用最多的东西,几乎所有需要异步并发执行任务的程序都可以使用线程池。 使用线程池带来的好处: 降低资源消耗。通过重复利用已创建的线程降低线程…

基于Java语言的充电桩系统+充电管理平台+云快充协议+云快充协议1.5+桩直连协议+云快充协议源码

介绍 云快充协议云快充1.5协议云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩系统桩直连协议 软件架构 1、提供云快充底层桩直连协议,版本为云快充1.5,对于没有对接过充电桩系统的开发者尤为合适; 2、包含:启…

文心一言功能新升级:读文档、懂翻译、能识图

9月4日,百度文心一言官网显示,在向全社会开放一周年之际,文心一言进行了功能最新全面升级,同时在周年期间为新老会员增加1个月专业版免费使用体验。 据了解,针对网页版用户需求,文心一言实现了创作内容更加…