日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Qt定时器QBasicTimer、startTimer、QTimer使用总结

發布時間:2023/12/15 c/c++ 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt定时器QBasicTimer、startTimer、QTimer使用总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • QBasicTimer
    這個定時器類是一個 輕量級的、較底層的、被Qt內部使用的定時器類。如果在你的應用程序中使用定時器類,推薦使用QTimer類,而不是這個類。該類和QTimer類類似,也提供start、isActive、stop函數接口。該類的對象不支持復制,即沒有拷貝構造函數和賦值函數,但支持移動語義,所以可以在支持移動語義的容器(如:std::vector)中維護該類對象的列表。Qt官方自帶的例子
    Examples\Qt-XX.XX.XX\widgets\widgets\wiggly
    工程講解了該定時器類的用法(Example在Qt的安裝目錄下,其中XX.XX.XX為Qt的版本號,如:5.14.1)。
  • startTimer
    該函數是QObject類的函數。啟動一個定時器并返回該定時器基于整形的定時器id。其有如下兩個重載函數:
  • int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer) int QObject::startTimer(std::chrono::milliseconds time, Qt::TimerType timerType = Qt::CoarseTimer)

    當調用startTimer后,每隔interval毫秒(第1個函數)或time(第2個函數)就會發送一個定時器事件,直到 killTimer函數被調用才停止發送。如果interval或time為0,則每次當系統中再也沒有其它事件即當事件隊列中的事件全部處理完時才會發送一次定時器事件。當定時器事件發生時,QOjbect或其子類可以在虛函數timerEvent中捕捉定時器事件,timerEvent函數的參數就是QTimerEvent對象即定期是事件對象。如果有多個定時器正在運行,可以用 QTimerEvent::timerId()找出哪個是正在激活使用的定時器。

    class MyObject : public QObject{Q_OBJECTpublic:MyObject(QObject *parent = nullptr);protected:void timerEvent(QTimerEvent *event) override;};MyObject::MyObject(QObject *parent): QObject(parent){startTimer(50); // 50-millisecond timerstartTimer(1000); // 1-second timerstartTimer(60000); // 1-minute timerusing namespace std::chrono;startTimer(milliseconds(50));startTimer(seconds(1));startTimer(minutes(1));// since C++14 we can use std::chrono::duration literals, e.g.:startTimer(100ms);startTimer(5s);startTimer(2min);startTimer(1h);}void MyObject::timerEvent(QTimerEvent *event){qDebug() << "Timer ID:" << event->timerId();}

    注意:定時器的精度依賴于操作系統和硬件。timerType參數可以用來自定義定時器精度,具體可以查看Qt assist對Qt::TimerType 枚舉的描述。大部分的平臺支持20ms的精度,如果Qt不能提供指定要求的定時器事件,則它會默默地丟棄一些定時器事件。
    3. QTimer
    這個是比較高端的定時器類,建議大家用這個。這個應該是大家用的比較多的了,故在此不再詳述,請參考Qt assist中的說明。

    總結

    以上是生活随笔為你收集整理的Qt定时器QBasicTimer、startTimer、QTimer使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。