2011-12-24 14 views
14

Próbuję już cztery dni, aby zrozumieć, jak używać QtDbus do wysyłania liczby całkowitej między dwiema aplikacjami. Ale wszystkie moje próby zawiodły. Znalazłem wiele przykładów w Internecie, ale kiedy próbuję to wszystko zebrać, nie mogę stwierdzić, gdzie i co dzieje się źle. Użyłem skutecznego mechanizmu Signal & & Slot, ale nigdy wcześniej nie korzystałem z Dbus. Nie mogę nawet zacząć .. Czy ktoś może podać minimalny pełny przykład?QtDbus C++ minimalny przykład

+0

Zobacz także moją powiązane pytanie i odpowiedzieć: http://stackoverflow.com/questions/20206376/how-do-i -extract-the-return-data-from-qdbusmessage-in-a-qt-dbus-call – MatthewD

+0

Proszę [edytuj] swoje pytanie, aby pokazać [to, co próbowaliście do tej pory] (http://whathaveyoutried.com). Powinieneś dołączyć kod [mcve] kodu, z którym masz problemy, a następnie możemy spróbować pomóc w rozwiązaniu konkretnego problemu. Powinieneś także przeczytać [zapytaj]. –

+0

jesteś poważny? – Tebe

Odpowiedz

1

Istnieje kilka przykładów, które są częścią dokumentacji Qt, patrz: http://developer.qt.nokia.com/doc/qt-4.8/examples-dbus.html

Ponadto, tutaj jest tutorial, który idzie przez dokonanie prostego klienta dbus i serwera: http://www.developer.nokia.com/Community/Wiki/QtDbus_quick_tutorial

+0

gdybym był w stanie umieścić jeden z tego przykładu razem ... to nie jest tak proste, jak to jest napisane – Tebe

+0

Przykłady Qt (pierwszy link) wszystkie zawierają kod źródłowy read-to-compile. Proponuję zacząć od jednego z nich, zmusić go do kompilacji i pracy od tego miejsca. Alternatywnie, drugi link przeprowadzi Cię przez proces tworzenia od zera. Mimo wszystko, powodzenia! =) – wjl

+0

nie, próbowałem. Więc jestem zmuszony używać Signals, które są o wiele lepiej udokumentowane i opuszczają qtdbus. – Tebe

0

Na początku jest niezły bałagan. W każdym razie, umieszczając kilka dzienników i używając dbus-monitor, powinno ci pomóc zrozumieć, która część zawodzi. W każdym razie, razem z przykładami Qt, bardzo pomocne może okazać się this. Jest to komplet dokumentów w pełni wyjaśnionych. Znalazłem te bardziej pomocne niż te z Qt w tym przypadku.

16

Najlepszy możliwy poradnik zrozumieć QT-DBus mogłem znaleźć był to -

KDE Tutorial on Qt-DBus

próbować podążać samouczek w tej kolejności -

  1. Wprowadzenie do D-Bus
  2. Tworzenie interfejsów D-Bus
  3. Dostęp do interfejsu DBus
  4. Tworzenie niestandardowych typów dla qt-DBus

Następnie wykonaj resztę, jeśli nie masz co najmniej takich problemów.

Możesz również zainstalować to narzędzie - D-Feet Bardzo pomaga w zrozumieniu/debugowaniu kodu dbus.

Bądź cierpliwy i spróbuj powyższych linków jeden po drugim, wróć tutaj z konkretnymi wątpliwościami, wspólnota ci pomoże.

Podanie przykładowej aplikacji nie pomoże, ponieważ nie jest tak naprawdę o kodzie, chodzi o proces, który należy wykonać, aby dotrzeć do tego kodu (Większość kodu jest generowana automatycznie w postaci klas adaptera i proxy. Musisz tylko nauczyć się jak to zrobić).

+0

jak to odpowiada na pytanie? Oprócz niepowiązanych linków, nie podałeś przykładu –

+3

Czasami odpowiedź nie jest odpowiedzią, kierunek w stronę odpowiedzi. –

1

Korzystałem również z samouczka wspomnianego przez wjl (http://www.developer.nokia.com/Community/Wiki/QtDbus_quick_tutorial), ale miałem problemy, dopóki nie zdałem sobie sprawy z demoifadaptora. * Pliki są interfejsem Dbus, a pliki mydemo. * Są częścią aplikacji, która wykonuje pracę. Role te nie były dla mnie jasne na początku (być może z powodu braku doświadczenia z Qt).

Zresztą kiedyś stworzyłem następujący plik mydemo.c, wszystko działało:

#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