48黑马QT笔记之QTimer以及QTimer与QTime的区别
1 QTimer(定时器):
1)使用QTimer的思想:定义一个定时器QTimer Timer,一般利用按钮开启定时器,代码为Timer.start(1000);开启后每1000毫秒触发一次timeout信号,这样我们就可以在想要的时间做某些事情。关闭时也一般用按钮关闭,代码为Timer.stop()。
2 定时器QTimer的例子:
1)头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QTimer>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_buttonStart_clicked();
void on_buttonStop_clicked();
private:
Ui::Widget *ui;
QTimer Timer; //定时器对象
};
#endif // WIDGET_H
2)实现文件.cpp:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(&Timer,&QTimer::timeout,
[=]()
{
static int i=0;
i++;
ui->lcdNumber->display(i); //是ui调用,不是定时器Timer调用
}
);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_buttonStart_clicked()
{
//启动定时器
//每隔1000ms,定时器myTimer自动触发timeout()
if(Timer.isActive()==false)
{
Timer.start(1000);
}
}
void Widget::on_buttonStop_clicked()
{
//如果开启定时器就关闭
if(Timer.isActive()==true)
{
Timer.stop();
}
}
3 QTimer与QTime的区别:
1)QTimer定时器需要定义对象。定时器开启后,规定时间内不断触发的是timeout信号,不想触发就关闭定时器,一般QTimer的开启关闭都是配合按钮来进行。
相关代码操作:
//1 定义定时器对象 QTimer Timer;
//2 定时器开启 Timer.start(1000);
//3 触发的是timeout信号
//4 关闭定时器 Timer.stop();
2)QTime计时器不需要自己定义对象,它返回一个文件描述符,只需要用int去接收即可。计时器开启后,规定时间内不断触发的是计时器事件,不想触发就关闭计时器。QTime的开启关闭也经常用按钮,看个人习惯。但个人建议可以的话,都尽量使用QTimer,不用重写事件函数嘛。
相关代码操作:
//1 计时器返回值相当于文件描述符 int TimeId1;
//2 计时器开启 TimerId1=(this->)startTimer(1000);
//3 触发的是timerEvent()事件函数 (开启后内部自动触发)
//4 关闭计时器 killTimer(TimerId1);
4 QTime的使用例子可以看day04的猜数字项目。