PyQt程序能否使用暴露自定义C++类型的DBus接口(通过Qt的MetaType系统进行调用)?如果是这样,怎么样?

问题描述:

我有一个Qt/C++应用程序,它通过DBus方法(by registering them as MetaTypes, and using annotations in the xml公开了一些定制的C++类,并且我希望我的PyQt程序使用这些方法。PyQt程序能否使用暴露自定义C++类型的DBus接口(通过Qt的MetaType系统进行调用)?如果是这样,怎么样?

我看到的问题是,暴露的类型是C++类,而不是Python,所以我怎么能让Python知道这些类?

在D-Bus中没有“C++类”这样的东西,它是语言不可知的。所有方法,功能等都具有可在基本D-Bus类型中表达的类型签名(请参见the spec)。只需调用这些类,它就可以工作。

+0

使用Qt的Dbus系统注册自定义类的要点是我可以在dbus方法中使用它们,而Qt将在幕后处理序列化。我想在我的python客户端中实现相同的抽象。它不“只是工作”。 – Casey 2010-07-17 15:05:59

+0

Python的DBus库确实可以处理所有的序列化。您不必事先声明任何内容或提前注册任何内容以在Python中使用C++ DBus接口。您不需要使用C++中的任何适配器或接口类。仔细阅读dbus-python教程,并尝试从Python中调用您的C++方法,就像他们在本教程中所做的一样。 – abbot 2010-07-17 18:21:58