天天看點

使用Qt D-Bus 擴充卡

       擴充卡(adaptors)是繼承自QObject派生類的一個特殊的類,向外部提供了使用D-Bus的接口。擴充卡是一個輕量級的類,旨在于間接調用實際對象,可以規範化或轉換外部輸入,是以,可以保護實際對象。

       與多重繼承不同,擴充卡可以随時加入到任何對象(移除則不行),在導出現有的類的時候具有更大的靈活性。擴充卡的另一個優點是可以在不同接口的同名方法中提供相似但不同的功能,當添加一個新版标準接口到對象中時,這種情形相當普遍。

       為了使用擴充卡,必須建立一個繼承QDBusAbstractAdaptor的類。既然是标準的QObject派生類,那麼Q_OBJECT宏必然出現在定義中,源檔案必定經moc工具處理。該類必須包含一個帶有“

D-Bus Interface

”字樣和

D-Bus

接口名稱的Q_CLASSINFO入口,來聲明它導入了哪個接口。每個類隻支援一個入口。

       類中的任何公有槽可以通過承載MethodCall類型消息的總線通路(詳見在 D-Bus 擴充卡中定義槽)。類中的信号自動在D-Bus總線上傳遞。但并不是所有類型都能寫入信号和槽的參數清單:詳見Qt D-Bus 類型系統。

       當然,任何使用Q_PROPERTY正确聲明的屬性都會出現在D-Bus的屬性接口中。因為QObject屬性系統不允許聲明不合理的屬性,是以不可能使用擴充卡定義隻寫屬性。

        英文原文位址:http://doc.qt.io/qt-5/usingadaptors.html

繼續閱讀