亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

五大连池市| 三台县| 贺兰县| 满城县| 太仆寺旗| 淄博市| 涟水县| 金沙县| 平谷区| 临邑县| 汽车| 滦平县| 道孚县| 平湖市| 北辰区| 芮城县| 广丰县| 保山市| 古交市| 仙游县| 海门市| 响水县| 武城县| 鹤峰县| 建始县| 合肥市| 衢州市| 丹棱县| 城口县| 青州市| 临西县| 东乡族自治县| 海林市| 怀来县| 万州区| 绥江县| 蓬安县| 绍兴市| 连山| 黄平县| 启东市|