Минимальный пример QtDbus С++

Я пробую уже четыре дня, чтобы понять, как использовать QtDbus для отправки целого числа между двумя приложениями. Но все мои попытки потерпели неудачу. Я нашел много примеров в Интернете, но когда я пытаюсь собрать все это вместе, я не могу понять, где и что происходит не так. Я использовал успешный Signal && Слот-механизм, но я никогда раньше не использовал Dbus.  Я даже не могу начать.. Может кто-нибудь дать минимальный полный пример?

Ответы

Ответ 1

Лучшее учебное пособие по пониманию qt-Dbus, которое я мог найти, это -

Учебник KDE по Qt-DBus

Попытайтесь следовать руководству в этом порядке -

  • Введение в D-Bus
  • Создание интерфейсов D-Bus
  • Доступ к интерфейсу DBus
  • Создание пользовательских типов для qt-DBus

Затем следуйте остальным, когда вам будет удобно, по крайней мере, этим.

Вы также можете установить этот инструмент - D-Feet Это помогает в понимании/отладке кода dbus.

Будьте терпеливы и попробуйте вышеуказанные ссылки один за другим, вернитесь назад с определенными сомнениями, сообщество поможет вам.

Предоставление вам примерного приложения не поможет вам, потому что оно действительно не о коде, а о процессе, которому вы должны следовать, чтобы достичь этого кода (большая часть кода автоматически генерируется в виде классов адаптера и прокси. просто нужно узнать, как это сделать).

Ответ 3

Я также использовал учебник, упомянутый 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

Ответ 4

В начале это довольно беспорядок. В любом случае, поместив несколько журналов и используя dbus-монитор, вы должны понять, какая часть неисправна. В любом случае, вместе с примерами Qt вы можете найти this очень полезно. Это полный комплект документов. В этом случае я нашел те более полезными, чем те, что были у Qt.