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也可以表示...