QT学习笔记(七):定时器事件的3种常用使用方式
生活随笔
收集整理的這篇文章主要介紹了
QT学习笔记(七):定时器事件的3种常用使用方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
QT學習筆記(七):定時器事件的2種常用使用方式
Qt中定時器的使用有2種方法:一種是使用QObject類提供的定時器通過重載 timerEvent 事件處理過程函數,一種就是使用QTimer類。
其中QTimer 類來實現定時器使用的更多,它提供了更高層次的編程接口,比如可以使用信號和槽,還可以設置只運行一次的定時器。
1.使用QObject類提供的定時器
頭文件添加:
private:int id1, id2, id3; protected:void timerEvent(QTimerEvent *event); //聲明定時器時間源文件添加:
// 構造函數id1 = startTimer(1000); // 開啟一個1秒定時器,返回其IDid2 = startTimer(1500);id3 = startTimer(2200);void Widget::timerEvent(QTimerEvent *event) {QTime time = QTime::currentTime(); // 獲取當前時間QString text = time.toString("hh:mm"); // 轉換為字符串if((time.second() % 2) == 0)text[2]=' '; // 每隔一秒就將“:”顯示為空格ui->lcdNumber->display(text);qDebug() << "timer1";}else if (event->timerId() == id2) {qDebug() << "timer2";}else {qDebug() << "timer3";} }通過從startTimer返回的ID傳入void QObject::killTimer ( int id ) 函數中殺死定時器,結束定時器進入超時處理。
killTimer (id1);2.使用QTimer定時器類
頭文件添加:
private slots:void timerUpdate(); // 聲明定時器溢出函數源文件添加:
#include <QTimer>// 構造函數 QTimer *timer = new QTimer(this); // 創建一個新的定時器 connect(timer, &QTimer::timeout, this, &Widget::timerUpdate); // 關聯定時器的溢出信號到槽上 timer->start(1000); // 設置溢出時間為1秒,并啟動定時器void Widget::timerUpdate() // 定時器溢出處理 {QTime time = QTime::currentTime(); // 獲取當前時間QString text = time.toString("hh:mm"); // 轉換為字符串if((time.second() % 2) == 0)text[2]=' '; // 每隔一秒就將“:”顯示為空格ui->lcdNumber->display(text); }結果:
只運行一次的定時器:
QTimer::singleShot(10000, this, &Widget::close);總結
以上是生活随笔為你收集整理的QT学习笔记(七):定时器事件的3种常用使用方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch的F.cross_entr
- 下一篇: dubbo学习总结——思维导图