<>一、定时器
<>第一种方式:
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文件
#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; }
<>二、显示效果