python - shiboken 类型系统不继承类

标签 python c++ qt binding

我有两个 shiboken 库可以将 Qt 绑定(bind)导出到 Python。
我在 Lib2 中的类是 Lib1 的子类,不从绑定(bind)继承任何方法,包括任何 QWidget/QObject 方法。

我已经加载了类型系统:

<load-typesystem name="source/plugin/typesystem_lib1.pyside.xml" generate="no" />

生成的绑定(bind)是可用的,但它缺少继承的方法。
如果有所不同,代码将被命名空间。

有没有人遇到过这样的事情?

最佳答案

编辑:
看起来 shiboken 实际上是根据 shiboken-header 文件 (global.h) 中的导入顺序添加了这些
因此,您需要确保在包含该 header 之前包含该 header 的所有依赖项,并且所有包含都必须在 shiboken-header 中,您不能包含包含其他文件的文件,因为它们不会被尊重。
此外,shiboken 不会使用完整路径,仅使用 header 名称,因此我在构建期间创建了一个自动符号链接(symbolic link),它创建了一个符号链接(symbolic link)到我的 header 并将它们命名为 path_to_data.h 是唯一的。
/编辑

原来失败的原因是因为我的两个类文件具有相同的名称,并且 shiboken 在包含信息时混淆了。

Shiboken 从 shiboken-header 加载 header ,但它将它们剥离为仅文件名而不是保留完整路径,这意味着我们得到:

#include "/path/to/data.h"
#include "data.h"

如果 data.h 位于包含路径中的某处,它将在其中找到具有相同名称的类。

我会认为这是一个错误,但希望这能帮助其他遇到此问题的人。

关于python - shiboken 类型系统不继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36536476/

相关文章:

python - Google ortools CVRP - 车辆的不同距离矩阵

c++ - 如何从前向声明的类中调用方法?

c++ - Qt5 : could not connect signal to slot

qt - 删除 QStandardItemModel 的多个索引的正确方法是什么?

Python 用循环创建数据帧

python - 使用值列表填充空单元格

c++ - 为什么 operator!= 不能进行转换?

c++ - 我怎样才能得到更好的分析?

c++ - 我想在qt中创建一个自定义标题栏

python - python 类中的方法可以用子类定义的类型进行注释吗?