91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

QT用線程啟動定時器

發布時間:2020-07-17 07:03:31 來源:網絡 閱讀:931 作者:WZM3558862 欄目:開發技術

    編寫QT程序時,時常會需要使用定時器QTimer來執行一些定時任務,但當定時任務執行的時間過長,則會影響整個界面的響應,因此會想到使用另一個工作線程來執行定時器,一般情況下可以選擇從QThread派生一個線程類,然后重載run并執行任務邏輯,那下面就介紹一個不用從QThread派生并使用QTimer的例子。

主窗口類頭文件加入:


[cpp] view plain copy

  1. QThread* _voiceThread;  

  2. QTimer* _voiceTimer;  


構造函數加入:



[cpp] view plain copy

  1. // 使用一個線程,跑定時器  

  2. _voiceThread = new QThread;  

  3. _voiceTimer = new QTimer;  

  4. _voiceTimer->setSingleShot(true);  

  5. // 在moveToThread前先啟動定時器,不然不在一個線程里,直接調用start會失敗  

  6. _voiceTimer->start(200);  

  7. _voiceTimer->moveToThread(_voiceThread);  

  8. // 定時器對象和this不在一個線程里面,因此這邊指定了連接方式為Qt::DirectConnection,由定時器所在線程直接觸發_onVoiceTimeout  

  9. connect(_voiceTimer, SIGNAL(timeout()), this, SLOT(_onVoiceTimeout()), Qt::DirectConnection);  

  10. // 連接定時器槽,用來停止定時器  

  11. connect(this, SIGNAL(stop()), _voiceTimer, SLOT(stop()));  

  12. _voiceThread->start();  


析構函數加入:



[cpp] view plain copy

  1. emit stop();  

  2. _voiceThread->quit();  

  3. _voiceThread->wait();  

  4.   

  5. delete _voiceTimer;  

  6. delete _voiceThread;  


定時器槽:



[cpp] view plain copy

  1. void Test::_onVoiceTimeout()  

  2. {  

  3.     // 執行任務  

  4.     // ...  

  5.     _voiceTimer->start(1000);  

  6. }  


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万安县| 城步| 日照市| 华容县| 常熟市| 鹿泉市| 嘉义县| 荥经县| 武陟县| 广河县| 固镇县| 简阳市| 宁晋县| 合肥市| 名山县| 神池县| 泗洪县| 邵武市| 龙州县| 潞西市| 丽江市| 谢通门县| 突泉县| 沭阳县| 满洲里市| 东山县| 清河县| 彰化市| 镇原县| 枣庄市| 延吉市| 溧阳市| 淳化县| 当阳市| 克拉玛依市| 保靖县| 花莲县| 常熟市| 许昌县| 连州市| 长宁县|