qtdbus的簡單用法

2021-06-16 08:52:26 字數 2072 閱讀 4792

nokia最近宣布把qt團隊裁了,聽聞此訊息倍感遺憾,如此利器竟棄之不用,但想想諾記已投入微軟的懷抱,meego已棄,qt似乎確實已無用,但對於公司的長足發展,絕對是損失,閒話不多說,下面正式介紹用法。

其實我們最終呼叫的是method,前面幾個無非是個分類方法,便於檢索。即是session bus下bus name為***的bus下面位於object paths下有個inte***ce,裡面提供了method供使用者呼叫。 

如圖示:

在session bus下有個bus名為com.jianbin.demo,提供了乙個object名為test,test擁有個名為com.vnmp.client.infos的inte***ce,此inte***ce下有三個method,分別為addintegers, getallclientip, getclientip。

下面就介紹使用qtdbus來實現圖示的dbus。

首先,定義dbus的xml檔案,xml檔案:

clientinfo.xml

此xml檔案很直白地對自身進行了描述,就不細說了。

下面使用qt提供的工具對此檔案進行解析,生成對應的c++檔案,當然可以手工地完成此項工作,但是考慮到這步相對地機械,所以推薦使用工具進行。

伺服器端:qdbusxml2cpp -c infoifadaptor -a infoadaptor.h:infoadaptor.cpp clientinfo.xml

在相應的資料夾下應該會生成infoadaptor.h 和 infoadaptor.cpp,

這個類的實現了xml檔案中的所有方法從qt方法到dbus方法的對映,方法的實際實現,還需我們另外實現乙個類

#ifndef info_h

#define info_h

#include #include class qstringlist;

class info : public qobject

;#endif // info_h

info::info(qobject *parent) :

qobject(parent)

qstringlist info::getallclientip(const qstring &clienttype)

qstring info::getclientip(const qstring &clientname, const qstring &clienttype)

int info::addintergers(int integer1, int integer2)

main檔案

int main(int argc, char *argv)

注意new infoadaptor(infoserver)這行,正是這裡,將實際執行的方法對映到了介面卡中。

另外qt的.pro檔案中千萬別忘了加上 config += qdbus,否則編譯不通過

圖示檢視dbus匯流排的工具為d-feet

client端就更簡單了,所有的工作qt都可以幫我們做好,我們全部所需要做的就是呼叫下qdbusxml2cpp

qdbusxml2cpp -v -c infoif -p infoif.h:infoif.cpp clientinfo.xml 

將生成的infoif.h infoif.cpp加入專案

main檔案:

int main(int argc, char *argv)

{ infoif* client = new infoif("com.jianbin.demo", "/test", qdbusconnection::sessionbus());

cout

for(qstringlist::const_iterator it = slist.begin(); it != slist.end(); ++it)

cout<

mysql的簡單用法 mysql簡單用法

刪除使用者 drop user jack drop比delete刪除的優勢在於drop可以刪除使用者的許可權,更加徹底 更改使用者名稱 rename user jack to jacknew 使用者的都存在與user表中,更改名稱,許可權不變 更改使用者密碼 update mysql.user se...

sudo的簡單用法

sudo 的簡單用法 sudo 是linux 下一種能讓普通使用者執行 root 使用者或者其他使用者的命令 在 linux 中為了能方便的作業系統,同事也為了減輕管理員的負擔,這裡就有了 sudo 這個工具,讓普通使用者能執行 root 使用者的一部分權利。在 linux unix 下專門為 su...

XPath的簡單用法

xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。下面使用乙個簡單的xml檔案內容 定位到節點名稱為parent1的元素 xpath為 tree parent1 其中前面加 表示根元素,此時的xpath就是絕對路徑了,在這裡的例子中,因為tree為根元素,所以這裡的xpath也可以表示...