QT学习笔记(14) 定时器类QTimer的使用

一、

  在前面的学习笔记中,我们已经学习定时器事件http://www.cnblogs.com/blog-ccs/p/7445323.html

  现在,我们学习QTimer定时器类,比较优劣。

二、示例代码

widget.h

 1 #ifndef WIDGET_H
 2 #define WIDGET_H
 3 
 4 #include <QWidget>
 5 #include <QTimer>//定时器对象
 6 
 7 namespace Ui {
 8 class Widget;
 9 }
10 
11 class Widget : public QWidget
12 {
13     Q_OBJECT
14 
15 public:
16     explicit Widget(QWidget *parent = 0);
17     ~Widget();
18 
19 private slots:
20     void on_pushButton_start_clicked();
21 
22     void on_pushButton_stop_clicked();
23 
24 private:
25     Ui::Widget *ui;
26 
27     QTimer *myTimer;//定时器对象
28     //一个对象对应一个定时器,如果想再有一个定时器,则可以直接再创建一个定时器对象即可
29 };
30 
31 #endif // WIDGET_H

widget.cpp

 1 #include "widget.h"
 2 #include "ui_widget.h"
 3 
 4 Widget::Widget(QWidget *parent) :
 5     QWidget(parent),
 6     ui(new Ui::Widget)
 7 {
 8     ui->setupUi(this);
 9 
10     myTimer = new QTimer(this);
11 
12     //在定时器启动之后,每隔时间间隔都会触发timeout()信号
13     connect(myTimer,&QTimer::timeout,
14             [=]()
15             {
16                 static int i = 0;
17                 i++;
18                 ui->lcdNumber->display(i);
19             }
20             );
21 
22 }
23 
24 Widget::~Widget()
25 {
26     delete ui;
27 }
28 
29 void Widget::on_pushButton_start_clicked()
30 {
31     //启动定时器
32     //时间间隔为100ms
33     //每隔100ms,定时器内部myTimer自动触发timeout()信号
34     if(myTimer->isActive() == false)
35     {
36         myTimer->start(100);
37     }
38 }
39 
40 void Widget::on_pushButton_stop_clicked()
41 {
42     //定时器停止
43     if(myTimer->isActive() == true)
44     {
45         myTimer->stop();
46     }
47 }

widget.ui界面

posted @ 2017-08-31 17:29  好困啊  阅读(666)  评论(0编辑  收藏  举报