自己跟着老师的课程一步步跟着写下来的,有需要的可以自取,有用的话还希望点一个小小的赞同哦~
QT快速入门 | 最简单最简洁的QT入门教程 | 嵌入式UI
四、QTimer 定时器
QTimer/widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
int picID;
~Widget();
private slots:
void on_startBt_clicked();
void timeoutSlot();
void on_stopBt_clicked();
void on_singleBt_clicked();
private:
Ui::Widget *ui;
QTimer *timer; //定义一个指针对象
};
#endif // WIDGET_H
QTimer/widget.cpp
#include "widget.h"
#include "ui_widget.h"
#define TIMEOUT 1*1000
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
timer = new QTimer; //创建一个定时器对象,构造函数中进行初始化
picID = 2; //第一张照片的照片ID
QImage img; //创建一个QImage对象
img.load("D:\\QT\\Qtproject\\QtOnline\\picture_test\\8.jpg"); //对象加载图片,传图片路径
ui->label->setPixmap(QPixmap::fromImage(img)); //显示在标签label上面,另一种显示图片的办法。setPixmap(img)这种用法不支持
//定时器时间到,发出timeout信号
connect(timer,&QTimer::timeout,this,&Widget::timeoutSlot);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_startBt_clicked()
{
timer->start(TIMEOUT);
}
void Widget::timeoutSlot()
{
QString path("D:\\QT\\Qtproject\\QtOnline\\picture_test\\");
path += QString::number(picID); //number将整型变成字符串变量
path += ".jpg";
QImage img;
img.load(path);
ui->label->setPixmap(QPixmap::fromImage(img));
picID++;
if (picID == 7)
{
picID = 1;
}
}
void Widget::on_stopBt_clicked()
{
timer->stop(); //更贴近暂停功能
}
/*
QTimer 定时器一旦启动,一直工作;
定时器只工作一次,QTimer有个静态成员函数
*/
void Widget::on_singleBt_clicked()
{
QTimer::singleShot(1000,this,SLOT(timeoutSlot())); //三个参数,计多长时间(毫秒),时间到了谁来处理(接收者),槽函数接收
//singleShot可以在帮助手册中搜到
}
//p8 还未开始