目录
一、QObject定时器
1、固定的函数
2、实现的功能
3、在头文件中
4、开启定时器
5、定时器事件(循环显示图片)
6、定时器停止
7、初始化时,显示第一张图片
8、图片相适应
9、最终结果
三、QTimer定时器
1、widget.h文件
2、创建定时器对象,定时器时间到,发出timeout信号
3、定时器事件(循环显示图片)
4、定时器结束
5、单次启动定时器(点一次,切换一次图片)
开启定时器:startTimer
结束定时器:killTimer
每隔一秒切换一个图片,有暂停的功能
#define TIMEOUT 1 * 1000 //1秒钟public:virtual void timerEvent(QTimerEvent *event);//event获取编号private:int myTimerId;//定时器的编号int picID;//图片的编号
时间到了就触发timerEvent,这个函数原本就有的,而且是虚函数,只是继承过来
void Widget::on_startButton_clicked()
{//开启定时器,返回定时器编号myTimerId = this->startTimer(TIMEOUT);
}
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;
}
void Widget::on_stopButton_clicked()
{this->killTimer(myTimerId);
}
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);
}


#include
#define TIMEOUT 1 * 1000private slots:void on_startButton_clicked();void timeoutSlot();void on_stopButton_clicked();void on_singleButton_clicked();private:Ui::Widget *ui;QTimer *timer;int picID;
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);
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;
}
void Widget::on_stopButton_clicked()
{timer->stop();
}
void Widget::on_singleButton_clicked()
{QTimer::singleShot(1000, this, SLOT(timeoutSlot()));
}
Qtimer的好处;可以一直1s启动一次,也可以单次启动
上一篇:Vue3打包后无法运行