Shiboken2 和自定义 Qt 小部件
Shiboken2 and custom Qt widget
在 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. That is, CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS has limitations so I reverted to use 'old' export headers。
但是,缺少 metaObject()
成员函数声明的编译错误仍然存在。它通过手动添加声明来工作,因为实现存在于 _wrapper.cpp
中。虽然这不是一个真正令人满意的解决方案,但它是其他用户的起点。
https://bugreports.qt.io/browse/PYSIDE-597 问题的 Qt 票证。
在 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. That is, CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS has limitations so I reverted to use 'old' export headers。
但是,缺少 metaObject()
成员函数声明的编译错误仍然存在。它通过手动添加声明来工作,因为实现存在于 _wrapper.cpp
中。虽然这不是一个真正令人满意的解决方案,但它是其他用户的起点。
https://bugreports.qt.io/browse/PYSIDE-597 问题的 Qt 票证。