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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 关于定时器实用的总结

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 关于定时器实用的总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Qt 關于定時器實用的總結
    • 第一種方案:startTimer + QTimerEvent
    • 第二種方案:QTimer類+信號和槽
    • 定時器與線程

Qt 關于定時器實用的總結

在實際編程中常常會使用到定時器,現在就將定時器的用法作個總結。

第一種方案:startTimer + QTimerEvent

對于一個QObject的子類,只需要使用
int QObject::startTimer(int interval) 函數來開啟一個定時器。當定時器溢出時可以在timerEvent() 函數中進行相關操作。

例如:

// 開啟一個1秒定時器,返回其ID 代表該定時器 id1 = startTimer(1000); //1000毫秒為一秒 id2 = startTimer(2000); id3 = startTimer(3000); //溢出處理函數 void Widget::timerEvent(QTimerEvent *event) {// 判斷是哪個定時器,在調試窗口輸出相應的語句。if(event->timerId() == id1){qDebug() << "timer1";}else if(event->timerId() == id2){qDebug() << "timer2";}else{qDebug() << "timer3";} }

第二種方案:QTimer類+信號和槽

使用QTimer類來構造一個定時器,然后信號和槽關聯溢出事件。

例如:
在構造函數中添加:

// 創建一個新的定時器QTimer *timer = new QTimer(this);// 關聯定時器的溢出信號到我們的槽函數上connect(timer,SIGNAL(timeout()),this,SLOT(timerUpdate()));// 設置溢出時間為1秒,并啟動定時器timer->start(1000);

槽函數里實現相關操作:

// 定時器溢出處理 void Widget::timerUpdate() {// 實現相關操作//.....}

定時器與線程

編寫QT程序時,時常會需要使用定時器QTimer來執行一些定時任務,但當定時任務執行的時間過長,則會影響整個界面的響應,因此會想到使用另一個工作線程來執行定時器,一般情況下可以選擇從QThread派生一個線程類。

例如:
在窗口類頭文件加入:

QThread* pWThread;
QTimer* pWTimer ;

1、構造定時器線程:

/* ---------------構造一個定時器線程------------------------------*/pWThread= new QThread(this);pWTimer = new QTimer();pWTimer->start(200);pWTimer->moveToThread(pWThread);connect(pWTimer,SIGNAL(timeout()),this,SLOT(on_TimeoutSlot()),Qt::QueuedConnection);connect(pWThread, SIGNAL(finished()), pWThread, SLOT(deleteLater()));connect(this, SIGNAL(stop()), pWTimer, SLOT(stop()));pWThread->start();

2、

void Test::on_TimeoutSlot() {// 實現相關操作//.....}

3、析構函數加入:

emit stop(); pWThread->quit(); pWThread->wait(); delete pWTimer ; delete pWThread;

總結

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

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