QtNodes is a Qt-based library for building node editors that support dataflow programming and general graph visualization.
The library addresses the need to create interactive node-based interfaces where data flows through connected processing nodes. It uses a Model-View architecture centered on an AbstractGraphModel class that defines the entire graph structure, allowing developers to work with arbitrary underlying data representations. For dataflow applications specifically, the DataFlowGraphModel class enables registration of processing algorithms as nodes, with automatic data propagation triggered when input arrives at any node and results flowing through output connections to update the entire graph in real time.
Developers should choose this tool if they need a Qt-based node editor with support for both simple graph visualization and complex dataflow systems. The library suits projects requiring dynamic ports, datatype-aware connections, and the ability to save and load graphs via JSON. A distinctive feature is headless mode, which allows graph creation and modification without attaching to a visual scene, useful for non-interactive processing. The tool supports both Qt 5 and Qt 6 across Linux, macOS, and Windows, with embedded widget support and layout options for vertical or horizontal graph arrangements. Version 3 represents a significant redesign from earlier versions, introducing the model-based approach and separating pure graph visualization from dataflow concerns.
The project maintains active continuous integration across multiple platforms and Qt versions. Development follows a branching strategy with separate maintenance branches for major versions while the master branch tracks the latest development state. The codebase is written in C++ and uses CMake for building, with Catch2 for testing infrastructure.