添加新的模块#

新模块可以出于许多原因添加,最重要的是当Qt在新版本中启用或包含一个新模块时。

添加绑定和文档是包含新模块的必要条件,但添加测试和示例是理想的。

添加绑定#

  • 找到正确的名称(查看Qt的包含路径)。

  • 将模块添加到 coin/dependencies.yaml 文件。

  • 将其添加到 sources/pyside6/cmake/PySideHelpers.cmake

  • 将其添加到 build_scripts/wheel_files.py(插件,翻译)。

  • 将现有模块复制到 sources/pyside6/PySide6/<name>

  • 适配 typesystem.xmlCMakeList.txt(例如使用 Qt Creator 的保留大小写替换功能)。

  • 确保依赖项正确。

  • 找到导出的公共类,将它们添加到 typesystem.xml 文件,并检查它们是否是 value-typeobject-type。添加它们的枚举和标志。

  • 将包装文件添加到 CMakeList.txt

  • sources/pyside6/tests 下创建一个包含空 CMakeList.txt 的测试目录。

  • 尝试使用 setup.py--module-subset 选项添加模块进行构建。

  • 注意日志中shiboken警告。

  • 请注意,ninja 混合了标准输出和标准错误,因此第一个警告通常隐藏在一个进度消息后面。

  • 一个方便的做法是使用来自 Qt Creator 仓库 *Qt Creator*qt-creator/scripts/shiboken2tasks.py 将它们转换为 .tasks 文件,这可以在 Qt Creator 的问题面板中加载。

  • generate_pyi 导入尝试创建签名的模块时,可能会出现链接错误。这表明缺少源文件条目或模块本身存在错误。

注意

为了确保构建成功,模块必须遵循 Qt 使用 #include <QtModule/header.h> 的约定,因为 PySide 中没有传递模块包含路径。

分发#

  • 根据 Qt Modules 确定模块属于哪个 wheel。

  • 将模块添加到 build_scripts/wheel_files.py 中,以便由 create_wheels.py 使用。

  • 将模块添加到其中一个 README.pyside6_*.md 文件中。

添加文档#

  • sources/pyside6/doc/modules.rst 中添加条目。

  • sources/pyside6/doc/qtmodules 中添加 .qdocconf.in 文件。

  • 将模块描述 .rst 文件添加到 sources/pyside6/doc/extras 中。