2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Qt的內(nèi)部進程通信機制的內(nèi)部進程通信機制打印|收藏此頁|推薦給好友|舉報發(fā)布:200942914:01作者:ECHO來源:查看:44次在Qt系統(tǒng)中,不僅有著構(gòu)造完善的系統(tǒng)結(jié)構(gòu),而且為了滿足用戶對編寫圖形用戶界面應用的種種需求,它還創(chuàng)建了許多新的系統(tǒng)機制,其中Qt所特有的內(nèi)部進程通信機制尤其值得一提。本文分析了基于QT的應用進程之間通信常用的三種機制:QCOP協(xié)議,SignalSlot機制和FIFO機制。給出了各自的使用方法,并指出了各自

2、的使用場合。1、QCOP協(xié)議QCOP是Qt內(nèi)部的一種通信協(xié)議,這種協(xié)議用于不同的客戶之間在同一地址空間內(nèi)部或者不同的進程之間的通信。目前,這種機制還只在Qt的嵌入式版本中提供。為實現(xiàn)這種通信機制,Qt中包括了由QObject類繼承而來的QCopChannel類,該類提供了諸如send()、isRegistered()等靜態(tài)函數(shù),它們可以在脫離對象的情況下使用。為了在channel中接收通信數(shù)據(jù),用戶需要構(gòu)造一個QCopChannel的子

3、類并提供receive()函數(shù)的重載函數(shù),或者利用connect()函數(shù)與接收到的信號相聯(lián)系。值得一提的是,在Qt系統(tǒng)中,只提供了QCOP協(xié)議機制和用于接收消息的類,而如何發(fā)送消息則沒有提供相應的類供用戶使用。在基于Qt的桌面系統(tǒng)Qtopia(QPE)中,則提供了相應的發(fā)送類:QCopEnvelope。用戶可以通過該類利用channel向其他進程發(fā)送消息。該類將通過QCopChannel發(fā)送QCop消息的過程進行了封裝,用戶只需要調(diào)用該

4、類中的相關(guān)函數(shù)就可以方便地實現(xiàn)進程之間的通信過程。一方面,QCop消息的發(fā)送要利用QCopEnvelope類,另一方面,接收消息則是通過與一個QCopChannel相關(guān)聯(lián)。在發(fā)送消息時,將利用如下的協(xié)議機制:QCopEnvelopee(channelnamemessagename)對于需要攜帶參數(shù)的消息,必須使用“()“運算符將參數(shù)添加到envelope中。eparameter1parameter2...對于不帶參數(shù)的消息,只需要利用:

5、QCopEnvelopee(channelnamemessagename)其中的Message1(QString)和Message2(QString)都是用戶自己定義的消息,該函數(shù)中分別對這些消息進行了相應的處理。在該例中當收到帶有參數(shù)的Message1消息時,將該字符串參數(shù)stream顯示在按鈕button上;當收到Message2消息時,將執(zhí)行關(guān)閉Window1窗口的動作,當然用戶可以根據(jù)需要自行編寫相應的處理過程。另一方面,在類C

6、lass2中需要發(fā)出消息的函數(shù)function中利用QCopEnvelope發(fā)送消息:voidClass2::function()QCopEnvelopee(“QPEDo““Message1(QString)“)eparam這里發(fā)出了Message1消息,并將需要攜帶的參數(shù)param發(fā)送到管道中。通過這樣的過程,用戶可以很方便地實現(xiàn)不同對象、不同進程之間通信過程,而且可以根據(jù)需要在通信過程中任意傳遞參數(shù)。2、信號槽(SignalSlot

7、)機制在Qt中,有一種用于對象之間的通信:信號槽機制,這種機制是Qt的核心機制,也是它區(qū)別于其他GUI工具的最主要的特征。在大多數(shù)GUI工具中,通常為可能觸發(fā)的每種行為定義一個回調(diào)函數(shù),這個回調(diào)函數(shù)是一個指向函數(shù)的指針。在Qt中,信號槽機制取代了這種繁雜的函數(shù)指針,能夠?qū)崿F(xiàn)同樣的功能。信號槽機制可以攜帶任意類型、任意數(shù)量的參數(shù),而且完全是安全的,不會引起系統(tǒng)的崩潰。所有由QObject類繼承而來的類,或者是它的一個子類,都可以包括信號槽

8、機制。信號通常是當對象改變他們的狀態(tài)時發(fā)出的,這就是一個對象在需要與其他對象通信時所需要做的一切,它并不知道是否有其他對象在另一端接收該信號。從這個意義上來說,這種機制實現(xiàn)了真正的信息封裝,確保了對象可以被當作一個獨立的軟件構(gòu)件來使用。而槽可以被用于接收信號,它們通常是類中的成員函數(shù)。一個槽并不知曉是否有一個信號與自己相聯(lián)系,同樣,包含有槽函數(shù)的對象也對通信機制一無所知,它們也可以作為一個獨立的軟件構(gòu)件。用戶可以按照需要將許多信號與一個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論