一、定时器
第一种方式:
1 利用事件 void timerEvent ( QTimerEvent * ev)
2 启动定时器 startTimer( 1000) 毫秒单位
3 timerEvent 的返回值是定时器的唯一标示 可以和ev->timerid 做比较
第二种方式:
1 利用定时器类 QTimer
2 创建定时器对象 QTimer * timer = new QTimer(this)
3 启动定时器 timer->start(毫秒)
4 每隔一定毫秒,发送信号 timeout ,进行监听
5 暂停 timer->stop
.h文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
//重写定时器的事件 虚函数 子类重写父类的虚函数
virtual void timerEvent(QTimerEvent *);
int id1; //定时器1的唯一标示
int id2; //定时器2的唯一标示
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
.cpp文件文章来源:https://www.toymoban.com/news/detail-595173.html
#include "widget.h"
#include "ui_widget.h"
#include <QTimer> //定时器类
#include <QMouseEvent>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//定时器第一种方式
//启动定时器 每隔1s调用一下timerEvent函数
id1 = startTimer(1000); //参数1 间隔 单位 毫秒
id2 = startTimer(2000);
//定时器第二种方式
QTimer * timer = new QTimer(this);
//启动定时器
timer->start(500);
connect(timer,&QTimer::timeout,[=](){
static int num = 1;
//label4 每隔0.5秒+1
ui->label_4->setText(QString::number(num++));
});
//点击停止或开始按钮 实现停止定时器或者启动定时器
connect(ui->btn,&QPushButton::clicked,[=](){
timer->stop();
//timer->start(500);
});
}
void Widget::timerEvent(QTimerEvent * ev)
{
if(ev->timerId() == id1)
{
static int num = 1;
//label2 每隔1秒+1
ui->label_2->setText( QString::number(num++));
}
if(ev->timerId() == id2)
{
//label3 每隔2秒 +1
static int num2 = 1;
ui->label_3->setText( QString::number(num2++));
}
}
Widget::~Widget()
{
delete ui;
}
二、显示效果
文章来源地址https://www.toymoban.com/news/detail-595173.html
到了这里,关于QT学习之定时器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!