2012-09-18 191 views
1

如何掛鉤我的QT插槽以響應某些第三方服務生成的D-BUS信號?QT-Dbus信號/插槽?

下面是對的嗎?

QDBusConnection bus = QDBusConnection::systemBus(); 
bus.connect("com.me.foo", "/", "com.me.foo.bar", "foo", 
       this, SLOT(fooSignal())); 

回答

0

首先,你必須找出在哪個公交車上登記了該服務(系統或會話)。對於會話總線,您必須將QDBusConnection :: systemBus()更改爲QDBusConnection :: sessionBus()

要獲得connect()的正確參數值,必須獲取服務名稱,對象路徑,接口和信號名稱。

完成這兩項任務的最簡單方法是使用qdbusviewer應用程序,它是Qt開發工具(Ubuntu中的qt4-dev-tools或qttools5-dev-tools)的一部分。它允許在兩個總線上查看服務,遍歷對象樹並列出方法。 D-Bus接口的屬性和信號,由每個註冊對象執行。