成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使Qt平臺(tái)中GUI保持響應(yīng)流暢

移動(dòng)開發(fā)
本文介紹的是如何使Qt平臺(tái)中GUI保持響應(yīng)流暢,在QT平臺(tái)中是否可以通過多線程以外的方法來(lái)提高響應(yīng)速度呢?本文給你解決。

Qt平臺(tái)中使GUI保持響應(yīng)流暢是本文要介紹的恩日,如何使Qt平臺(tái)中的GUI保持響應(yīng)流暢?一般來(lái)說(shuō)耗時(shí)較長(zhǎng)的操作,分為計(jì)算密集型操作和IO密集型操作,對(duì)于這兩類操作如何提高響應(yīng)速度。

而從操作的本質(zhì)上來(lái)說(shuō),操作又可分為不可分解操作,如在第三方庫(kù)中耗時(shí)較長(zhǎng)的操作,以及可分解操作,其中可分解操作又可細(xì)分為串行操作和可并行操作,如何針對(duì)這幾類操作來(lái)提高響應(yīng)速度呢?

如何將異步的操作,如網(wǎng)絡(luò)庫(kù)中異步的讀取數(shù)據(jù)方法,變成同步的操作?

此外對(duì)于多線程,普遍的看法是可以提供程序的運(yùn)行速度,其實(shí)不然,不正確地使用線程常常會(huì)使程序變慢,那么在QT平臺(tái)中是否可以通過多線程以外的方法來(lái)提高響應(yīng)速度呢?本文給你解決。

首先什么是對(duì)GUI的響應(yīng)?答:GUI的響應(yīng)就是系統(tǒng)對(duì)于GUI事件的處理速度。

由于系統(tǒng)處理事件需要一定的時(shí)間,所以一般窗口系統(tǒng)都會(huì)提供一個(gè)事件隊(duì)列來(lái)存儲(chǔ)事件。如果把每個(gè)事件處理看成一個(gè)任務(wù)的話,那么事件處理就類似于操作系統(tǒng)對(duì)于任務(wù)按照優(yōu)先級(jí)進(jìn)行處理,使得每個(gè)任務(wù)的平均等待時(shí)間最小。那么就可以借鑒一下操作系統(tǒng)中的方法,比如:

分級(jí),讓較長(zhǎng)的任務(wù)延后執(zhí)行。

分時(shí),對(duì)于較長(zhǎng)的任務(wù),讓其執(zhí)行一段時(shí)間后暫停,然后再執(zhí)行。

減少每個(gè)任務(wù)運(yùn)行的耗時(shí),當(dāng)然這是最基本的方法。

先看***個(gè)分級(jí),當(dāng)一個(gè)事件處理程序知道自己將執(zhí)行耗時(shí)很長(zhǎng)的操作時(shí),可以調(diào)用QCoreApplication::processEvents()方法,等待消息隊(duì)列中的方法都執(zhí)行完再執(zhí)行。當(dāng)然這是一個(gè)最基本的方法,只適用與簡(jiǎn)單的情況,如果事件隊(duì)列中的另一程序也調(diào)用了該方法則會(huì)出現(xiàn)死鎖。

再看分時(shí),它適用于可分解的操作(包括串行操作和并行操作),只需記錄當(dāng)前任務(wù)的執(zhí)行情況,然后可以再次執(zhí)行。它的使用流程如下:

  1. FunctionEventHandler()  
  2. {  
  3. //開始計(jì)時(shí)  
  4. While(執(zhí)行時(shí)間<用戶可接受的響應(yīng)時(shí)間)  
  5. {  
  6. //執(zhí)行操作:}  
  7. //注冊(cè)系統(tǒng)空閑事件以繼續(xù)處理  

QT平臺(tái)中注冊(cè)系統(tǒng)空閑事件的方法可以通過QTimer::singleShot(0,this,SLOT(calculate()));將系統(tǒng)空閑信號(hào)注冊(cè)到自己的槽中?;蛘呤褂肣MetaObject::invokeMethod(this,"calculate",Qt::QueuedConnection);方法,通過invokeMethod異步的執(zhí)行某個(gè)方法。

***重點(diǎn)看一下如何減少響應(yīng)的時(shí)間,對(duì)于數(shù)據(jù)密集型操作,推薦使用ThreadPool來(lái)管理,減少線程上下文切換的時(shí)間;而對(duì)于IO密集型操作,則自己管理一個(gè)thread來(lái)實(shí)現(xiàn),而這也是我認(rèn)為thread最應(yīng)該使用的情景,即讓CPU和外設(shè)都處于滿負(fù)荷運(yùn)轉(zhuǎn)狀態(tài),減少總的操作時(shí)間。

對(duì)于并行操作響應(yīng)時(shí)間的減少,在QT平臺(tái)中引入了QtConcurrent的概念,采用Map/Reduce的方式,具體可以參考QT平臺(tái)中的ConcurrentProgramming節(jié)。

***再解答下如何在QT平臺(tái)中將異步操作改成同步操作的方法,這個(gè)就屬于QTspecial的內(nèi)容,一般的讀者可以跳過。

具體的代碼如下所示:

  1. QNetworkAccessManagermanager;  
  2. QEventLoopq;  
  3. QTimertT;  
  4. tT.setSingleShot(true);  
  5. connect(&tT,SIGNAL(timeout()),&q,SLOT(quit()));  
  6. connect(&manager,SIGNAL(finished(QNetworkReply*)),  
  7. &q,SLOT(quit()));  
  8. QNetworkReply*reply=manager.get(QNetworkRequest(QUrl("http://www.qtcentre.org")));  
  9. tT.start(5000);//5stimeout  
  10. q.exec();  
  11. if(tT.isActive()){  
  12. //downloadcomplete  
  13. tT.stop();  
  14. }else{  
  15. //timeout  

其中主要利用了QEventLoop類,它將創(chuàng)建一個(gè)本地的Eventloop,然后block,直到接受到finished信號(hào),或者timeout超時(shí)信號(hào)后才退出,而事件循環(huán)則不會(huì)被block。

小結(jié):如何使Qt平臺(tái)GUI保持響應(yīng)流暢的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-09 16:18:25

Qt GUI

2015-12-01 09:02:58

ios界面流暢

2011-08-17 10:09:25

iPhone開發(fā)UIWebViewTouch事件

2023-10-10 09:23:52

開源Pomatez

2020-02-24 08:00:20

云的計(jì)算解決方案虛擬機(jī)

2010-07-22 08:42:04

Eclipse平臺(tái)中P

2014-05-09 15:43:39

移動(dòng)安全Android安全

2010-05-04 13:41:04

Unix平臺(tái)

2010-05-14 14:07:38

VMwareXen

2025-06-26 08:00:00

JSON前端開發(fā)

2022-06-08 08:23:18

低代碼無(wú)代碼網(wǎng)絡(luò)安全

2022-07-05 07:02:59

iOS 系統(tǒng)安卓墓碑機(jī)制

2010-05-20 13:30:26

MySQL代碼

2010-06-22 16:19:01

Black Berry

2011-09-05 15:09:06

Android平臺(tái)Phonegap

2010-07-05 16:25:13

IPX SPX協(xié)議

2023-10-16 18:51:04

ClickHouse大數(shù)據(jù)

2011-09-06 13:31:10

MTK平臺(tái)Scatter文件

2011-09-06 16:00:08

QT平臺(tái)靜態(tài)庫(kù)

2009-12-18 14:53:35

Junos網(wǎng)絡(luò)操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人av久久 | 国产精品久久久久久久久久免费看 | 91欧美| 午夜三级网站 | 91精品久久久久 | 久久久精彩视频 | 一区二区三区免费在线观看 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 欧美日韩在线高清 | 日本大香伊一区二区三区 | 五月天天丁香婷婷在线中 | av网站免费看 | www.久久国产精品 | 欧美日韩亚洲一区 | 国产色婷婷精品综合在线播放 | 九色综合网| 久久新视频 | 日本黄色大片免费 | 日韩免费视频一区二区 | 欧美一二三四成人免费视频 | 欧美在线一区二区三区 | 亚洲狠狠 | 三级在线视频 | 国产精品九九视频 | 日韩区 | 天天操天天操 | www.精品一区 | 国产日韩欧美精品一区二区三区 | 久久精品国产一区二区电影 | 成人a视频片观看免费 | 免费在线黄色av | 久久精品无码一区二区三区 | 国产91九色| 一级片网址 | 四虎影视一区二区 | 一区二区三区av夏目彩春 | 亚洲综合色自拍一区 | 欧美亚洲另类丝袜综合网动图 | 成人免费视频网站在线看 | 国产一区二区在线视频 | 国产精品观看 |