Qt学习4-Qt Creator定时器(哔站视频学习记录)
创始人
2024-05-30 00:00:15
0

目录

一、Qt的两种定时器

二、对象  QObject:startTimer  killTimer  

1、开启定时器

2、定时器事件 

3、关闭定时器

4、完整代码

三、类  QTimer

1、创建定时器对象

2、connect函数

3、开启定时器

4、定时器的槽函数

5、关闭定时器

6、单击一次按钮触发一次槽函数

7、完整代码

四、总结显示图像方法

1、QPixmap

2、QImage

3、QIcon


一、Qt的两种定时器

1、对象  QObject:startTimer  killTimer  

2、类  QTimer

二、对象  QObject:startTimer  killTimer  

定时器事件通过定时器的ID来关闭和开启对应定时器,这里是myTimerId。

1、开启定时器

 //开启定时器,返回定时器编号myTimerId = this->startTimer(TIMEOUT);//1开始定时器

2、定时器事件 

void Widget::on_startButton_clicked()
{//开启定时器,返回定时器编号myTimerId = this->startTimer(TIMEOUT);//1开始定时器}void Widget::timerEvent(QTimerEvent *event)//2定时器事件
{if(event->timerId()!=myTimerId){return;}//图片显示方法1 setPixmap(“路径”)QString path("D:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\");path += QString::number(picID);path +=".jpg";QPixmap pix(path);ui->label->setPixmap(pix);picID++;if(picID==5){picID=1;}
}

3、关闭定时器

this->killTimer(myTimerId);//3关闭定时器

4、完整代码

  • 实现label循环显示五张图片
  • widget.h
#ifndef WIDGET_H
#define WIDGET_H#include 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();private slots:void on_startButton_clicked();void on_stopButton_2_clicked();private:Ui::Widget *ui;int myTimerId;int picID;
};
#endif // WIDGET_H
  • widget.cpp
#include "widget.h"
#include "ui_widget.h"#define TIMEOUT    1*1000Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);picID = 2;QPixmap pix("D:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\1.jpg");ui->label->setPixmap(pix);
}Widget::~Widget()
{delete ui;
}void Widget::on_startButton_clicked()
{//开启定时器,返回定时器编号myTimerId = this->startTimer(TIMEOUT);//1开始定时器}void Widget::timerEvent(QTimerEvent *event)//2定时器事件
{if(event->timerId()!=myTimerId){return;}QString path("D:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\");path += QString::number(picID);path +=".jpg";QPixmap pix(path);ui->label->setPixmap(pix);picID++;if(picID==5){picID=1;}
}void Widget::on_stopButton_2_clicked()
{this->killTimer(myTimerId);//3关闭定时器
}

三、类  QTimer

1、创建定时器对象

timer = new QTimer;//创建一个定时器对象,构造函数中进行初始化

2、connect函数

connect是QT中的连接函数,将信号发送者sender对象中的信号signal与接受者receiverz中的member槽函数联系起来。四个参数分别是:谁,什么信号,谁处理,怎么处理

//定时器时间到,发出timeout信号 谁,什么信号,谁处理,怎么处理connect(timer,&QTimer::timeout,this,&Widget::timeoutSlot);

3、开启定时器

timer -> start(TIMEOUT);

4、定时器的槽函数

void Widget::timeoutSlot()
{QString path("D:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\");path += QString::number(picID);//QString中有个静态成员函数number(),可以把数字转换成字符串。path +=".jpg";QImage img;img.load(path);ui->label->setPixmap(QPixmap::fromImage(img));picID++;if(picID==5){picID=1;}
}

5、关闭定时器

timer->stop();

6、单击一次按钮触发一次槽函数

widget.h

void Widget::on_SingleButton_clicked()
{QTimer::singleShot(1000,this,SLOT(timeoutSlot()));//三个参数,计多长时间(毫秒),时间到了谁来处理(接收者),槽函数接收}

7、完整代码

#ifndef WIDGET_H
#define WIDGET_H#include 
#include#define TIMEOUT 1*1000QT_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();void timeoutSlot();void on_PauseButton_clicked();void on_SingleButton_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);timer = new QTimer;//创建一个定时器对象,构造函数中进行初始化picID = 2;QImage img;img.load("D:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\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:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\");path += QString::number(picID);//QString中有个静态成员函数number(),可以把数字转换成字符串。path +=".jpg";QImage img;img.load(path);ui->label->setPixmap(QPixmap::fromImage(img));picID++;if(picID==5){picID=1;}
}
void Widget::on_PauseButton_clicked()
{timer->stop();
}/*
QTimer 定时器一旦启动,一直工作;
定时器只工作一次,QTimer有个静态成员函数
*/void Widget::on_SingleButton_clicked()
{QTimer::singleShot(1000,this,SLOT(timeoutSlot()));//三个参数,计多长时间(毫秒),时间到了谁来处理(接收者),槽函数接收}

四、总结显示图像方法

1、QPixmap

//label上显示图片
QPixmap pix("D:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\1.jpg");
ui->label->setPixmap(pix);

2、QImage

//label上显示图片
QImage img;
img.load("D:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\1.jpg");
ui->label->setPixmap(QPixmap::fromImage(img));

3、QIcon

//按钮上放图片
QIcon con("D:\\Qt\\Qt-Learn-File\\QtOnline\\calculator2\\del.PNG");
ui->delButton->setIcon(con);

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...