nodeeditor:基于 Qt 的节点编辑器库项目

Qt Node Editor. Dataflow programming framework

分支13Tags33
文件最后提交记录最后更新时间
1 个月前
6 个月前
3 年前
6 个月前
5 个月前
3 年前
3 个月前
5 个月前
1 个月前
1 个月前
3 年前
9 年前
11 个月前
1 年前
5 个月前
3 年前
6 个月前

QtNodes #######

.. image:: https://github.com/paceholder/nodeeditor/actions/workflows/cmake_build.yml/badge.svg :target: https://github.com/paceholder/nodeeditor/actions/workflows/cmake_build.yml

简介

QtNodes 是一个基于 Qt 的通用库,旨在为各类应用开发节点编辑器。该库可用于简单的图形可视化与编辑,也可进一步扩展以支持 数据流范式

该库采用模型-视图(Model-View)架构。整个图形结构由一个继承自 AbstractGraphModel 的类定义。通过此类可以创建或添加节点和连接。其底层数据结构可以是任何任意类型或表示形式。

AbstractGraphModel 的实例可以选择是否附加到专门的 QGraphicsSceneQGraphicsView 对象上。也就是说,支持所谓的“无头”(headless)操作模式(modus operandi)。

文档

QtNodes 文档 (Read the Docs)

警告 版本 3.0 中对许多类进行了更改。如果您的大型项目是基于 2.x.x 版本开发的,请务必先阅读文档并查看示例,然后再检出新版本代码。

分支

v2v3 分支分别对应 2.x.x3.x 版本。master 分支包含最新的开发状态。

.. contents:: 导航 :depth: 2

数据流范式

扩展模型类 DataFlowGraphModel 允许注册以节点为代表的“处理算法”,并配备了一组 Qt 的信号和槽,用于在节点间传播数据。

节点的算法在有新的输入数据到达时触发。计算结果会传播到输出连接。每个新连接会获取可用数据并进一步传播。源节点中的任何变化都会立即通过所有连接传播,从而更新整个图形。

支持的环境

平台

  • Linux (x64, gcc, Qt 5.15.2) |ImageLink|
  • OSX (Apple Clang, Qt 5.15.2) |ImageLink|
  • Windows (MSVC, Qt 5.15.2) |ImageLink|
  • Windows (MSVC, Qt 6.3.0) |ImageLink|

.. |ImageLink| image:: https://github.com/paceholder/nodeeditor/actions/workflows/cmake_build.yml/badge.svg :target: https://github.com/paceholder/nodeeditor/actions/workflows/cmake_build.yml

依赖项

  • Qt >5.15
  • CMake 3.11
  • Catch2

当前状态 (v3)

  • 基于模型的图形
  • 无头模式 您可以创建、填充、修改 AbstractGraphModel 的派生类,而无需将其添加到实际的流程图场景中。该库现在被设计为通用的图形可视化和修改工具,不再仅专注于数据传播。
  • 构建在图形模型代码之上的自动数据传播 该库既可以用于纯图形可视化目的,也可以用于最初实现的数据传播功能。
  • 动态端口
  • 数据类型感知连接
  • 嵌入式 Qt 部件
  • 一出多入连接
  • 基于 JSON 的界面样式
  • 将场景保存为 JSON 文件
  • 自定义节点几何形状
  • 垂直和水平图形布局
  • 撤销/重做、复制 (CTRL+D)

构建

如果您希望使用 Qt5 版本而非 Qt6 进行构建,请将此选项设置为 false:

::

USE_QT6

mkdir build && cd build && cmake .. -DUSE_QT6=on 或者 mkdir build && cd build && cmake .. -DUSE_QT6=off

要构建静态库,请使用:

::

cmake .. -DBUILD_SHARED_LIBS=off

Linux

::

git clone git@github.com:paceholder/nodeeditor.git cd nodeeditor mkdir build cd build cmake .. make -j && make install

Qt Creator

  1. 打开 CMakeLists.txt 作为项目。
  2. 构建 -> 运行 CMake
  3. 构建 -> 全部构建
  4. 点击 运行 按钮

.. note:: 该项目包含使用 Catch2 构建的单元测试。如果您没有安装 Catch2,可以通过在 CMake 配置中设置 -DBUILD_TESTING=OFF 来禁用测试。

使用 vcpkg 与 Cmake ^^^^^^^^^^^^^^^^^^^^^^^^

  1. 安装 vcpkg
  2. CMake 的配置步骤中添加以下标志

::

-DCMAKE_TOOLCHAIN_FILE=<vcpkg_dir>/scripts/buildsystems/scripts/buildsystems/vcpkg.cmake

测试

QtNodes 包含一个使用 Catch2 构建的全面单元测试套件。

运行测试

从构建目录执行:

::

构建测试

make test_nodes

# 运行所有测试
./bin/test_nodes

# 运行特定类别
./bin/test_nodes "[core]"        # 核心功能测试
./bin/test_nodes "[graphics]"    # 图形系统测试

测试覆盖范围

  • 核心模型操作(节点 CRUD、连接)
  • 信号发射验证(AbstractGraphModel 信号)
  • 序列化(JSON 保存/加载)
  • 撤销系统集成
  • 图形场景管理
  • 连接工具

有关详细的测试文档,请参阅 测试指南

需要帮助

#. 使用 PySide 进行 Python 封装。 #. QML 前端。 #. 编写 ClangFormat 配置。

欢迎任何建议!

贡献

#. 保持礼貌、尊重和协作精神。 #. 提交错误报告:

#. 描述您的环境(Qt 版本、编译器、操作系统等) #. 描述复现问题的步骤

#. 提交拉取请求:

#. 首先创建一个提案任务。我们可以共同设计出更好的方案。 #. 创建拉取请求。如果适用,请为您的问题创建一个简单示例,详细描述所做的更改,并提供用例。

#. 提交开发请求:

#. 详细描述您的问题 #. 提供一些用例。

#. 我在业余时间维护这个项目,当我工作或家庭事务繁忙时可能无法及时处理。如果我长时间没有反应或未回复,请提醒我一下

引用

::

Dmitry Pinaev et al, Qt Nodes, (2013-2025), GitHub repository, https://github.com/paceholder/nodeeditor

BibTeX::

@misc{Pinaev2025, author = {Dmitry Pinaev et al}, title = {QtNodes. Node Editor}, year = {2025}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/paceholder/nodeeditor}}, commit = {877ddb8c447a7a061a5022e9956a3194132e3dd9} }

支持

如果你喜欢这个项目,可以通过 PayPal 向我捐赠 |ImagePaypal|_

.. |ImagePaypal| image:: https://img.shields.io/badge/Donate-PayPal-green.svg .. _ImagePaypal: https://www.paypal.com/paypalme/DmitryPinaev

如果你的捐赠金额超过 100 美元,我会将其中的 100 美元转赠给某个救助患病儿童的基金会,并向你反馈相关情况。

致谢

3.0 版本的发布得到了 Davide Faconti 的慷慨帮助。

展示案例

YouTube 视频

.. image:: https://img.youtube.com/vi/pxMXjSvlOFw/0.jpg :target: https://www.youtube.com/watch?v=pxMXjSvlOFw

|

.. image:: https://img.youtube.com/vi/i_pB-Y0hCYQ/0.jpg :target: https://www.youtube.com/watch?v=i_pB-Y0hCYQ

CANdevStudio

CANdevStudio 是一款经济高效的跨平台 CAN 仿真软件替代品。CANdevStudio 使每位汽车开发人员都能对诸如点火状态、车门状态或倒挡等 CAN 信号进行仿真。凭借其模块化设计,新的自定义功能易于实现。

.. image:: assets/showcase-candevstudio.png

Chigraph

Chigraph 是一款面向初学者的可视化编程语言,其独特之处在于它是一种直观的流程图:

.. image:: assets/chigraph.png

它具有与 C/C++ 的轻松绑定、包管理以及酷炫的界面等特性。

Spkgen 粒子编辑器

Spkgen 是一款针对 SPARK 粒子引擎的编辑器,它采用基于节点的界面来为游戏创建粒子效果。

.. image:: assets/spkgen.png

项目介绍

Qt节点编辑器。数据流编程框架【此简介由AI生成】

定制我的领域
1553.69 K959访问 GitHub