程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 使用qt多線程的一個簡單方法

使用qt多線程的一個簡單方法

編輯:關於C語言

有時候在gui編程中需要調用一個非常耗費時間的api類的函數,這個時候不使用多線程的話界面就會卡死。使用多線程有一個非常簡單的辦法,不需要建立新的QThread派生類。

設需要調用的api定義為

bool demoDialog::threadDemo(QString realArgStr1, QString realArgStr2,int realArgInt)
{
////
...
////
}

如果不是qt的api函數,自己建立一個簡單的包裝函數就行了。要保證傳遞的參數都是qt變量,這裡不能傳遞指針


那麼在對話框的某個函數中這樣調用threadDemo


QFuture<bool> result = QtConcurrent::run(this,(&demoDialog::threadDemo),realArgStr1,realArgStr2,realArgInt);
while(result.isResultReadyAt(0)!= true)
{
QCoreApplication::processEvents();
}
if(result.result())
{
//success
}
else
{
//failed
}


就可以實現界面不卡死而在新的線程中運行threadDemo(),threadDemo()返回後新線程自動退出。

這個辦法的缺點是,api運行期間cpu占用非常的高,是processEvents導致的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved