目录
一、Qt的两种定时器
二、对象 QObject:startTimer killTimer
1、开启定时器
2、定时器事件
3、关闭定时器
4、完整代码
三、类 QTimer
1、创建定时器对象
2、connect函数
3、开启定时器
4、定时器的槽函数
5、关闭定时器
6、单击一次按钮触发一次槽函数
7、完整代码
四、总结显示图像方法
1、QPixmap
2、QImage
3、QIcon
1、对象 QObject:startTimer killTimer
2、类 QTimer
定时器事件通过定时器的ID来关闭和开启对应定时器,这里是myTimerId。
//开启定时器,返回定时器编号myTimerId = this->startTimer(TIMEOUT);//1开始定时器
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;}
}
this->killTimer(myTimerId);//3关闭定时器
#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
#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关闭定时器
}
timer = new QTimer;//创建一个定时器对象,构造函数中进行初始化
connect是QT中的连接函数,将信号发送者sender对象中的信号signal与接受者receiverz中的member槽函数联系起来。四个参数分别是:谁,什么信号,谁处理,怎么处理
//定时器时间到,发出timeout信号 谁,什么信号,谁处理,怎么处理connect(timer,&QTimer::timeout,this,&Widget::timeoutSlot);
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;}
}
timer->stop();
widget.h
void Widget::on_SingleButton_clicked()
{QTimer::singleShot(1000,this,SLOT(timeoutSlot()));//三个参数,计多长时间(毫秒),时间到了谁来处理(接收者),槽函数接收}
#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()));//三个参数,计多长时间(毫秒),时间到了谁来处理(接收者),槽函数接收}
//label上显示图片
QPixmap pix("D:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\1.jpg");
ui->label->setPixmap(pix);
//label上显示图片
QImage img;
img.load("D:\\Qt\\Qt-Learn-File\\QtOnline\\objectTimer\\pic\\1.jpg");
ui->label->setPixmap(QPixmap::fromImage(img));
//按钮上放图片
QIcon con("D:\\Qt\\Qt-Learn-File\\QtOnline\\calculator2\\del.PNG");
ui->delButton->setIcon(con);
上一篇:领域驱动设计-架构篇