目录
一、QObject定时器
1、固定的函数
开启定时器:startTimer
结束定时器:killTimer
2、实现的功能
每隔一秒切换一个图片,有暂停的功能
3、在头文件中
#define TIMEOUT 1 * 1000 //1秒钟
public:
virtual void timerEvent(QTimerEvent *event);//event获取编号
private:
int myTimerId;//定时器的编号
int picID;//图片的编号
时间到了就触发timerEvent,这个函数原本就有的,而且是虚函数,只是继承过来
4、开启定时器
void Widget::on_startButton_clicked()
{
//开启定时器,返回定时器编号
myTimerId = this->startTimer(TIMEOUT);
}
5、定时器事件(循环显示图片)
void Widget::timerEvent(QTimerEvent *event)
{
if (event->timerId() != myTimerId)//判断是哪个定时器
return;
QString path("C:\\Users\\simple\\Desktop\\qt_code\\objectTimer\\");
path += QString::number(picID);
path += ".jpg";
QPixmap pix(path);
ui->label->setPixmap(pix);
picID++;
if (4 == picID)
picID = 1;
}
6、定时器停止
void Widget::on_stopButton_clicked()
{
this->killTimer(myTimerId);
}
7、初始化时,显示第一张图片
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
picID = 2;
QPixmap pix("C:\\Users\\simple\\Desktop\\qt_code\\objectTimer\\1.jpg");
ui->label->setPixmap(pix);
}
8、图片相适应
9、最终结果
三、QTimer定时器
1、widget.h文件
#include <QTimer>
#define TIMEOUT 1 * 1000
private slots:
void on_startButton_clicked();
void timeoutSlot();
void on_stopButton_clicked();
void on_singleButton_clicked();
private:
Ui::Widget *ui;
QTimer *timer;
int picID;
2、创建定时器对象,定时器时间到,发出timeout信号
widget.cpp:在构造函数中
timer = new QTimer;//创建定时器对象
picID = 2;
QImage img;
img.load("C:\\Users\\simple\\Desktop\\qt_code\\QTimer\\1.jpg");
ui->label->setPixmap(QPixmap::fromImage(img));
//定时器时间到,发出timeout信号
connect(timer, &QTimer::timeout, this, &Widget::timeoutSlot);
3、定时器事件(循环显示图片)
void Widget::timeoutSlot()
{
QString path("C:\\Users\\simple\\Desktop\\qt_code\\QTimer\\");
path += QString::number(picID);
path += ".jpg";
QImage img;
img.load(path);
ui->label->setPixmap(QPixmap::fromImage(img));
picID++;
if (4 == picID)
picID = 1;
}
4、定时器结束
void Widget::on_stopButton_clicked()
{
timer->stop();
}
5、单次启动定时器(点一次,切换一次图片)
void Widget::on_singleButton_clicked()
{
QTimer::singleShot(1000, this, SLOT(timeoutSlot()));
}
Qtimer的好处;可以一直1s启动一次,也可以单次启动