在 Windows 上,我需要在 Python 中使用一些用 C++ 编写的自定义 Qt5 小部件,并且由于其许可证,我必须使用 pyside2
。
我已经能够从源代码编译 pyside2
库(连同 shiboken2
示例),但我找不到一个简单的示例来说明如何包装自定义 Qt5 小部件。
我知道 pyside2
还没有正式发布,但它似乎已经被使用了(例如,在 Maya 中):In a PySide2 app, how can I get the ID for a QWindow?
任何人都可以给出提示或指示吗?一个最小的例子会更好。
编辑
根据@placinta 的评论,我创建了一个 repo用一个尝试包装自定义 QMainWindow
的最小示例。
在我的测试中,我使用了 pyside2
Conda package包装 Qt
5.6。
当我执行 shiboken2
可执行文件时,我得到了 tons of warnings .
我假设这些警告触发了 compilation error使用 shiboken2
生成的代码。
最佳答案
我的初始 CMake 配置问题是描述的 here .也就是说,CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 有限制,所以我恢复使用“旧”export headers .
但是,缺少metaObject()
成员函数声明的编译错误仍然存在。它通过手动添加声明来工作,因为实现存在于 _wrapper.cpp
中。虽然这不是真正令人满意的解决方案,但它是其他用户的起点。
https://bugreports.qt.io/browse/PYSIDE-597 问题的 Qt 票证.
关于c++ - Shiboken2 和自定义 Qt 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47607616/