2011-12-24 42 views
14

我已經嘗試了四天瞭解如何使用QtDbus在兩個應用程序之間發送整數。但我所有的嘗試都失敗了。我在互聯網上發現了很多例子,但是當我試圖把所有這些放在一起時,我無法找到錯誤的地方和方向。我用成功的信號& &槽機制,但我從來沒有使用過Dbus。 我甚至不能開始..可能有人給最小的完整例子?QtDbus C++最小例子

+0

另請參閱我的相關問題和答案:http://stackoverflow.com/questions/20206376/how-do-i -extract-the-returned-data-from-qdbusmessage-in-a-qt-dbus-calling – MatthewD 2013-12-03 23:38:42

+0

請[編輯]你的問題以顯示[你到目前爲止所嘗試的](http://whathaveyoutried.com)。您應該包含您遇到問題的代碼[mcve],然後我們可以嘗試幫助解決特定問題。你還應該閱讀[問]。 – 2017-02-24 14:56:03

+0

你是認真的嗎? – Tebe 2017-02-24 20:09:51

回答

1

有幾個例子是Qt文檔的一部分,請參見:http://developer.qt.nokia.com/doc/qt-4.8/examples-dbus.html

此外,這裏要說的是通過製作一個簡單的DBUS客戶端和服務器散步教程:http://www.developer.nokia.com/Community/Wiki/QtDbus_quick_tutorial

+0

如果我只能將其中一個例子放在一起...它不是那麼簡單,就像它有寫入 – Tebe 2011-12-25 04:18:36

+0

Qt示例(第一個鏈接)都包含讀取編譯源代碼。我建議從其中一個開始,讓它編譯,然後從那裏開始工作。或者,第二個鏈接會引導您如何從頭開始創建一個鏈接。無論如何,祝你好運! =) – wjl 2011-12-25 04:59:41

+0

不,我試過了。所以我不得不使用信號,這是更好的記錄和離開qtdbus。 – Tebe 2011-12-25 05:13:19

0

在開始的時候相當混亂。無論如何,通過放置一些日誌和使用dbus-monitor應該可以幫助您瞭解哪個部分失敗。無論如何,再加上Qt例子,你可能會發現this非常有幫助。這是一套充分解釋的文件。在這種情況下,我發現那些比來自Qt的更有幫助。

16

的最好的教程,瞭解QT-烏思我能找到的就是這一點 -

KDE Tutorial on Qt-DBus

嘗試按照這個順序教程 -

  1. 介紹d總線
  2. 創建D-Bus接口
  3. 訪問DBus接口
  4. 爲qt-DBus創建自定義類型

然後按照其中的其餘部分進行操作,當您對至少它們感到滿意時。

您也可以安裝此工具 - D-Feet 它有助於理解/調試dbus代碼。

請耐心等待,逐一嘗試上面的鏈接,回到這裏,具體疑惑,社區將幫助你。

給你一個示例應用程序不會幫助你,因爲它並不是真的關於代碼,它關於你必須遵循的過程來達到該代碼(大部分代碼是以適配器和代理類的形式自動生成的。你只需要學習如何做到這一點)。

+0

這是如何回答這個問題的?除了不相關的鏈接,你沒有提供的例子 – 2014-01-20 12:53:03

+3

有時答案不是答案,答案的方向是。 – 2014-01-20 17:43:10

1

我還使用了wjl(http://www.developer.nokia.com/Community/Wiki/QtDbus_quick_tutorial)提到的教程,但是直到我意識到demoifadaptor。*文件是Dbus的接口和mydemo。*文件是您的應用程序的一部分才能完成工作。起初這些角色並不清楚(可能是由於Qt缺乏經驗)。

無論如何,一旦我創建以下文件mydemo.c,事情的來龍去脈:

#include "mydemo.h" 
#include <QObject> 
#include <iostream> 

MyDemo::MyDemo(QObject *parent) 
{ 
    // Do nothing 
} 

void MyDemo::SayBye() 
{ 
    std::cout << "Bye" << std::endl; 

} 

void MyDemo::SayHello(const QString &name, const QVariantMap &customdata) 
{ 
    std::cout << "Hello" << std::endl; 
} 

// end of file