4412開發(fā)板Qt定時器-實驗步驟和部分代碼
發(fā)布時間:2021-5-15 10:44
發(fā)布者:
落風
實驗目標:實現(xiàn)計時器功能,并且點擊打點按鈕將當前時間打印出來。
用到的類有 QTimer 和 QTime,QTimer 是一個計時器類,相當于秒表,QTimer 是一個時間類,相當于手表。
一:實驗步驟(迅為4412開發(fā)板)
步驟一:界面布局:
拖拽組件,在屬性編輯欄設置大小,然后選中按鈕,點擊水平布局;
在屬性編輯欄設置 Label 的最小高度為 50,選中全部組件,點擊柵格布局,如圖:
根據(jù)實際情況調整大小,更改對象名后如下圖:
步驟二:創(chuàng)建計時器類對象 timer 和時間類 time,設置初始時間為 0。
- class TimerP : public QMainWindow
- {
- Q_OBJECT
- public:
- explicit TimerP(QWidget *parent = 0); ~TimerP();
- QTimer timer;
- QTime time;
- .......... };
復制代碼
步驟三:開啟計時器對象,設置定時時間,時間到后會發(fā)出 timeout() 信號,綁定此信號和自定義的槽函數(shù) timeOut_Slot()。
void start(int msec);
函數(shù)功能:開啟定時器,時間到后發(fā)出 timeout 信號,并重新計時。
參數(shù) msec 含義:定時時間,單位毫秒。
- TimerP::TimerP(QWidget *parent) :
- QMainWindow(parent), ui(new Ui::TimerP)
- {
- ui->setupUi(this);
- //信號 timeout 與槽函數(shù)綁定
- connect(&timer,SIGNAL(timeout()),this,SLOT(timeOut_Slot()));
- time.setHMS(0,0,0,0);
- ui->showTime->setText("00:00:00:000");
- }
- /**開始定時
- */
- void TimerP::on_starBu_clicked()
- {
- timer.start(3);
- }
復制代碼
步驟四:槽函數(shù) timeOut_Slot()內處理時間類對象,使每次計時時間結束后,時間對象能增加相同的時間,實現(xiàn)計時功能。
QTime addMSecs(int ms) const;
參數(shù) msec 含義:增加的時間值,單位毫秒。
函數(shù)功能:返回一個當前時間對象之后 ms 毫秒之后的時間對象。
- /*
- * 計時
- */
- void TimerP::timeOut_Slot()
- {
- //qDebug("timt out");
- time = time.addMSecs(3);
- ui->showTime->setText(time.toString("hh:mm:ss.zzz"));
- }
復制代碼
步驟五:打點記錄功能,使用全局變量記錄排名,并顯示到界面。
- /*
- * 記錄
- */
- void TimerP::on_bitBu_clicked()
- {
- QString temp;
- i=i+1;
- temp.sprintf("%d: ",i);
- ui->bitTime->append(temp);
- ui->bitTime->append(time.toString("hh:mm:ss.zzz"));
- }
復制代碼
二:部分代碼
- timerp.h:
- class TimerP : public QMainWindow
- {
- Q_OBJECT
- public:
- explicit TimerP(QWidget *parent = 0); ~TimerP();
- QTimer timer;
- QTime time;
- private slots:
- void on_starBu_clicked();//開始計時按鈕槽函數(shù)
- void timeOut_Slot();//定時時間到槽函數(shù)
- void on_closeBu_clicked();//關閉按鈕槽函數(shù)
- void on_resetBu_clicked();//重置按鈕槽函數(shù)
- void on_bitBu_clicked();//打點記錄按鈕槽函數(shù)
- private:
- Ui::TimerP *ui;
- };
- timerp.cpp:
- #include
- #include
- static int i;
- TimerP::TimerP(QWidget *parent) :
- QMainWindow(parent), ui(new Ui::TimerP)
- {
- ui->setupUi(this);
- connect(&timer,SIGNAL(timeout()),this,SLOT(timeOut_Slot()));
- time.setHMS(0,0,0,0);
- ui->showTime->setText("00:00:00:000");
- }
- TimerP::~TimerP()
- {
- delete ui;
- }
- void TimerP::on_starBu_clicked()
- {
- timer.start(3);
- }
- /*
- * 處理時間類對象
- */
- void TimerP::timeOut_Slot()
- {
- //qDebug("timt out");
- time = time.addMSecs(3);
- ui->showTime->setText(time.toString("hh:mm:ss.zzz"));
- }
- /*
- * 關閉
- */
- void TimerP::on_closeBu_clicked()
- {
- timer.stop();
- i=0;
- }
- /*
- * 重置
- */
- void TimerP::on_resetBu_clicked()
- {
- timer.stop();
- time.setHMS(0,0,0,0);
- ui->showTime->setText("00:00:00:000");
- ui->bitTime->clear();
- i=0;
- }
- /*
- * 記錄
- */
- void TimerP::on_bitBu_clicked()
- {
- QString temp;
- i=i+1;
- temp.sprintf("%d: ",i);
- ui->bitTime->append(temp);
- ui->bitTime->append(time.toString("hh:mm:ss.zzz"));
- }
復制代碼
|