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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論