使用PyQt模块作为插件的QPluginLoader:可能吗?

1 投票
1 回答
2355 浏览
提问于 2025-04-15 21:54

我有一个C++的应用程序,它可以通过QPluginLoader加载外部插件。
QPluginLoader是用来访问Qt插件的工具。Qt插件是存储在共享库里的(也就是DLL文件)。

这些插件需要继承一个纯虚类(还有Q_DECLARE_INTERFACE)和QObject

我想用Python和PyQt来创建插件。
这样做是否可行?工作量会不会太大?
比如说,如果我需要把模块转换成C++,用boost::python,那就没什么意义了,因为PyQt本身就是把C++转换成Python的。

谢谢!

编辑:
我查看了关于PyQt插件的文档:
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html#writing-qt-designer-plugins

PyQt有一个专门的类QPyDesignerCustomWidgetPlugin用于Qt设计器插件。
但是这个类在QtDesigner.pyd模块里,所以我看不到代码,无法复制相同的架构。

编辑2:
http://www.boddie.org.uk/david/Projects/Python/Qt/
文件pyqt4-embedded-examples-2008-02-13.tar.gz
里面包含了将PyQt小部件集成到C++中的代码示例。但你不使用QPluginLoader,还需要在你的C++主代码中集成Python解释器的头文件。

再次感谢!

1 个回答

2

嗯,我觉得这事儿没那么简单,要花不少功夫。如果你在PyQt里写一个模块,可能你得把整个Python解释器都加到你的可执行文件里,这样才能解释那些模块。即使你把这些模块翻译成C++,翻译后的函数在某个时候也得调用Python的接口,这样就还是得依赖Python本身。

撰写回答