1. 程式人生 > >QT學習筆記(14) 定時器類DTimer的使用

QT學習筆記(14) 定時器類DTimer的使用

fin isa play htm number conn stat alt .cn

一、

  在前面的學習筆記中,我們已經學習定時器事件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界面

技術分享

QT學習筆記(14) 定時器類DTimer的使用