QuickQanava
Overview | Dependencies | Building | Roadmap | License
(Linux / g++6 / Qt5.12.1 - OSX / Clang 8.1 / Qt 5.12.1 CMake)
(Windows / MSVC 2015 x64 / Qt5.10.1 / qmake)
There is quite a lot of traffic and clones actually: Please remember to star the project and reports bugs....
- CHANGELOG 20191110: Complete rewrite of LineGrid, various cosmetic fixes and bugfixes (update to v0.15.0).
- CHANGELOG 20190825: Maintenance release, add more flexible content creation methods in qan::Graph.
- CHANGELOG.md
QuickQanava
is a C++14 library designed to display graphs and relational content in a Qt/QML application. QuickQanava provide QML components and C++ classes to visualize medium-sized directed graphs in a C++/QML application. QuickQanava focus on displaying relational content into a dynamic user interface with DnD support, resizable content and visual creation of topology. More advanced layouts algorithms might be integrated in future versions.
QuickQanava main repository is hosted on GitHub: http://cneben.github.io/QuickQanava/index.html
QuickQanava is primarily developed for Linux with Qt 5.13 with MSVC2017 and g++7 (minimal required Qt version is Qt 5.10)
-
Project homepage: http://cneben.github.io/QuickQanava/index.html
For any questions, please contact: [email protected]
QuickQanava focus on writing content delegates in QML (even if they could be 100% defined in C++, a QML engine is still necessary in the background).
QuickQanava Showcase
Edges |
---|
![]() |
Nodes |
---|
![]() |
- User Doc: QuickStart - Custom Nodes
Visual Connector |
---|
![]() |
- User Doc: QuickStart - Visual Connector
- Reference documentation: qan::Connector interface and Qan.VisualConnector component
Groups |
---|
![]() |
- User Doc: QuickStart - Using Groups
Styles |
---|
![]() |
- User Doc: QuickStart - Using Styles
Dependencies
- Qt 5.10 is mandatory for Qt Quick Shapes support.
- Google Test is a GTpo dependency, it is optional for QuickQanava until you intent to use a graph with custom non-STL/non-Qt containers:
Building
Get the latest QuickQanava sources:
git clone https://github.com/cneben/QuickQanava
cd QuickQanava
Or install as a Git submodule:
$ git submodule add https://github.com/cneben/QuickQanava
$ git submodule update
QuickQanava could be used with either qmake or CMake build configuration system.
qmake | cmake |
---|---|
Static build, no QML module, all resources are linked statically trough QRC | Installable or embedable, QuickQanava is loaded using a QML module that need to be installed |
Using qmake (preferred and supported way of integrating QuickQanava):
-
Open quickqanava.pro in QtCreator.
-
Select a kit, build and launch samples.
or with (CMake >= 3.5) and Qt Creator:
-
Open CMakeLists.txt in QtCreator.
-
In 'Projects' panel, set DBUILD_SAMPLES option to true in CMake configuration panel.
-
Select a kit, build and launch samples.
Or manually in command line using CMake:
$ cd QuickQanava
$ mkdir build
$ cd build
# IF QT_DIR IS CONFIGURED AND QMAKE IN PATH
$ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SAMPLES=TRUE ..
# IF QT DIR IS NOT CONFIGURED, CONFIGURE KIT MANUALLY
$ cmake -DCMAKE_PREFIX_PATH="/home/b/Qt/5.11.0/gcc_64" -DQT_QMAKE_EXECUTABLE="/home/b/Qt/5.11.0/gcc_64/bin/qmake" -DBUILD_SAMPLES=TRUE ../QuickQanava/
$ cmake --build .
# Then run the samples in ./samples
# Eventually make install
Detailled instructions: Installation
Note that a previously installed "QML plugin" version of QuickQanava might interfere with a fully static build using direct .pri inclusion. Typical error message looks like:
QQmlApplicationEngine failed to load component
qrc:/nodes.qml:33 module "QuickQanava" plugin "quickqanavaplugin" not found
QuickQanava and QuickContainers plugins directories could be removed manually from $QTDIR\..\qml
to fix the problem (ex: rm -rf '~/Qt/5.11.1/gcc_64/qml/QuickQanava').
Roadmap / Changelog
- v0.15.x:
- Add full support for groups inside group (ie subgraphs).
- Update geometry creation interface and delegate management.
- v0.16.x:
- Add support for direct visual dragging of port items.
- Fix current qan::LineGrid bugs
- Add "snap to grid" support.
- v0.17.x:
- Rewrite CMake configuration, add install step, use QML plugins.
- v1.: Advanced edge visualization
- Add better support for graph fine grained locking strategies.
- Add simple layout algorithms (force directed, tree).
- Publish the 4k sample (40k is probably too much for QML without dedicated culling and LOD code).
Contributors
- @kwallner / Conan.io and CMake configuration
- @Letrab / Edge configuration
- @machinekoder / QML plugin and CMake configuration
- @NielsBillen / Ports support and stability fixes
License
Copyright (c) 2017-2019 BA