2010-07-05 14 views
0

J'ai une application Qt/C++ qui expose certaines classes C++ personnalisées via les méthodes DBus (by registering them as MetaTypes, and using annotations in the xml), et je veux que mon programme PyQt utilise ces méthodes.Un programme PyQt peut-il utiliser une interface DBus exposant des types C++ personnalisés (commercialisés via le système MetaType de Qt)? Si c'est le cas, comment?

Le problème que je vois est que les types exposés sont des classes C++, pas python, alors comment puis-je rendre Python conscient de ces classes?

Répondre

0

Il n'existe pas de 'classes C++' dans D-Bus, il est indépendant du langage. Toutes les méthodes, fonctions, etc. ont des signatures de type exprimables dans les types D-Bus de base (voir the spec). Appelez simplement ces classes, et cela devrait fonctionner.

+0

Le point d'enregistrement des classes personnalisées avec le système Dbus de Qt est de pouvoir les utiliser dans les méthodes dbus et Qt s'occupera de la sérialisation en coulisses. Je veux réaliser la même abstraction dans mon client python. Cela ne fonctionne pas seulement. – Casey

+0

La bibliothèque DBus de Python gère toute la sérialisation elle-même. Vous n'avez pas besoin de déclarer quoi que ce soit ou d'enregistrer quoi que ce soit à l'avance pour consommer une interface C++ DBus en python. Vous n'avez besoin d'aucune classe d'adaptateur ou d'interface comme en C++. Lisez attentivement le tutoriel dbus-python et essayez d'appeler vos méthodes C++ à partir de python comme dans le didacticiel. – abbot