Минимальный пример QtDbus С++
Я пробую уже четыре дня, чтобы понять, как использовать QtDbus для отправки целого числа между двумя приложениями. Но все мои попытки потерпели неудачу. Я нашел много примеров в Интернете, но когда я пытаюсь собрать все это вместе, я не могу понять, где и что происходит не так. Я использовал успешный Signal && Слот-механизм, но я никогда раньше не использовал Dbus.
Я даже не могу начать.. Может кто-нибудь дать минимальный полный пример?
Ответы
Ответ 1
Лучшее учебное пособие по пониманию qt-Dbus, которое я мог найти, это -
Учебник KDE по Qt-DBus
Попытайтесь следовать руководству в этом порядке -
- Введение в D-Bus
- Создание интерфейсов D-Bus
- Доступ к интерфейсу DBus
- Создание пользовательских типов для qt-DBus
Затем следуйте остальным, когда вам будет удобно, по крайней мере, этим.
Вы также можете установить этот инструмент - D-Feet
Это помогает в понимании/отладке кода dbus.
Будьте терпеливы и попробуйте вышеуказанные ссылки один за другим, вернитесь назад с определенными сомнениями, сообщество поможет вам.
Предоставление вам примерного приложения не поможет вам, потому что оно действительно не о коде, а о процессе, которому вы должны следовать, чтобы достичь этого кода (большая часть кода автоматически генерируется в виде классов адаптера и прокси. просто нужно узнать, как это сделать).
Ответ 2
Есть несколько примеров, которые являются частью документации Qt: см. http://developer.qt.nokia.com/doc/qt-4.8/examples-dbus.html
Кроме того, вот учебник, который проходит через простой клиент и сервер dbus: http://www.developer.nokia.com/Community/Wiki/QtDbus_quick_tutorial
Ответ 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.