版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Qt的內部進程通信機制的內部進程通信機制打印|收藏此頁|推薦給好友|舉報發(fā)布:200942914:01作者:ECHO來源:查看:44次在Qt系統(tǒng)中,不僅有著構造完善的系統(tǒng)結構,而且為了滿足用戶對編寫圖形用戶界面應用的種種需求,它還創(chuàng)建了許多新的系統(tǒng)機制,其中Qt所特有的內部進程通信機制尤其值得一提。本文分析了基于QT的應用進程之間通信常用的三種機制:QCOP協(xié)議,SignalSlot機制和FIFO機制。給出了各自的使用方法,并指出了各自
2、的使用場合。1、QCOP協(xié)議QCOP是Qt內部的一種通信協(xié)議,這種協(xié)議用于不同的客戶之間在同一地址空間內部或者不同的進程之間的通信。目前,這種機制還只在Qt的嵌入式版本中提供。為實現這種通信機制,Qt中包括了由QObject類繼承而來的QCopChannel類,該類提供了諸如send()、isRegistered()等靜態(tài)函數,它們可以在脫離對象的情況下使用。為了在channel中接收通信數據,用戶需要構造一個QCopChannel的子
3、類并提供receive()函數的重載函數,或者利用connect()函數與接收到的信號相聯系。值得一提的是,在Qt系統(tǒng)中,只提供了QCOP協(xié)議機制和用于接收消息的類,而如何發(fā)送消息則沒有提供相應的類供用戶使用。在基于Qt的桌面系統(tǒng)Qtopia(QPE)中,則提供了相應的發(fā)送類:QCopEnvelope。用戶可以通過該類利用channel向其他進程發(fā)送消息。該類將通過QCopChannel發(fā)送QCop消息的過程進行了封裝,用戶只需要調用該
4、類中的相關函數就可以方便地實現進程之間的通信過程。一方面,QCop消息的發(fā)送要利用QCopEnvelope類,另一方面,接收消息則是通過與一個QCopChannel相關聯。在發(fā)送消息時,將利用如下的協(xié)議機制:QCopEnvelopee(channelnamemessagename)對于需要攜帶參數的消息,必須使用“()“運算符將參數添加到envelope中。eparameter1parameter2...對于不帶參數的消息,只需要利用:
5、QCopEnvelopee(channelnamemessagename)其中的Message1(QString)和Message2(QString)都是用戶自己定義的消息,該函數中分別對這些消息進行了相應的處理。在該例中當收到帶有參數的Message1消息時,將該字符串參數stream顯示在按鈕button上;當收到Message2消息時,將執(zhí)行關閉Window1窗口的動作,當然用戶可以根據需要自行編寫相應的處理過程。另一方面,在類C
6、lass2中需要發(fā)出消息的函數function中利用QCopEnvelope發(fā)送消息:voidClass2::function()QCopEnvelopee(“QPEDo““Message1(QString)“)eparam這里發(fā)出了Message1消息,并將需要攜帶的參數param發(fā)送到管道中。通過這樣的過程,用戶可以很方便地實現不同對象、不同進程之間通信過程,而且可以根據需要在通信過程中任意傳遞參數。2、信號槽(SignalSlot
7、)機制在Qt中,有一種用于對象之間的通信:信號槽機制,這種機制是Qt的核心機制,也是它區(qū)別于其他GUI工具的最主要的特征。在大多數GUI工具中,通常為可能觸發(fā)的每種行為定義一個回調函數,這個回調函數是一個指向函數的指針。在Qt中,信號槽機制取代了這種繁雜的函數指針,能夠實現同樣的功能。信號槽機制可以攜帶任意類型、任意數量的參數,而且完全是安全的,不會引起系統(tǒng)的崩潰。所有由QObject類繼承而來的類,或者是它的一個子類,都可以包括信號槽
8、機制。信號通常是當對象改變他們的狀態(tài)時發(fā)出的,這就是一個對象在需要與其他對象通信時所需要做的一切,它并不知道是否有其他對象在另一端接收該信號。從這個意義上來說,這種機制實現了真正的信息封裝,確保了對象可以被當作一個獨立的軟件構件來使用。而槽可以被用于接收信號,它們通常是類中的成員函數。一個槽并不知曉是否有一個信號與自己相聯系,同樣,包含有槽函數的對象也對通信機制一無所知,它們也可以作為一個獨立的軟件構件。用戶可以按照需要將許多信號與一個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Qt源碼剖析及對象間通信機制的研究.pdf
- Android進程通信機制研究與應用.pdf
- 算法課程設計---進程通信與進程同步機制實現
- 操作系統(tǒng)課程設計--進程通信與進程同步機制實踐
- 操作系統(tǒng)課程設計--進程通信與進程同步機制實踐
- Android進程間通信機制Binder的分析與對比研究.pdf
- 實驗題目進程管理及進程通信
- 實驗三-進程通信
- 基于 qt 的串口通信工具的設計與實現
- 試驗三、linux的進程間通信
- 微內核進程間通信的研究
- 進程的消息通信帶答案版
- 第8章、進程間通信
- 通信距離受限的進程代數研究.pdf
- 微內核進程間通信的研究.pdf
- 基于qt的局域網通信設計說明書
- 【更新】(2010.12)qt編寫串口通信程序全程圖文講解
- 基于 QT 的串口通信工具的設計與實現演示ppt.dps
- 基于 QT 的串口通信工具的設計與實現演示ppt.dps
- 答案實驗二 進程機制
評論
0/150
提交評論