quickqanava

QuickQanava is a C++/QML graph drawing library for Qt5


Keywords
complex-networks, cpp, cpp-library, dataflow-programming, graph, graph-theory, graph-visualization, graphs, qml, qt, qt-containers, visualization
License
GPL-3.0+
Install
inqlude install quickqanava

Documentation

QuickQanava

Overview | Dependencies | Building | Roadmap | License

Build Status (Linux / g++6 / Qt5.10.1 - OSX / Clang 8.1 / Qt 5.11.1 CMake)

Build status (Windows / MSVC 2015 x64 / Qt5.10.1 / qmake)

Documentation | License | | Twitter URL

There is quite a lot of traffic and clones actually: Please remember to star the project and reports bugs....

QuickQanava is a C++14 library designed to display graphs and relational content in a Qt 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 with Qt 5.10 with MSVC2015U3 and g++7 (minimal required Qt version is Qt 5.10)

For any questions, please contact: benoit@destrat.io

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

Toplogy sample video

Edges
Curved-Straight Edges
Nodes
Custom content
Visual Connector
Visual Connector
Groups
Groups
Styles
Custom 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: Google Test GitHub

Building

Get the latest QuickQanava sources:

git clone https://github.com/cneben/QuickQanava
cd QuickQanava

QuickQanava could be used with either qmake or CMake build configuration system.

  1. Open quickqanava.pro in QtCreator.

  2. Select a kit, build and launch samples.

or (CMake > 3.5)

  1. Open CMakeLists.txt in QtCreator.

  2. In 'Projects' panel, set DBUILD_SAMPLES option to true in CMake configuration panel.

  3. Select a kit, build and launch samples.

Or manually using CMake:

$ git submodule add https://github.com/cneben/QuickQanava
$ git submodule update
$ cd QuickQanava
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SAMPLES=TRUE ..
$ cmake --build .
# Then run the samples

Roadmap / Changelog

  • v0.10.0:
    • Redesign GTpo (add complete support for static/dynamic behaviours).
    • Push GTpo test coverage to 100% (ie increase coverage for subgroups).
  • v0.11.x:
    • Add support for direct visual dragging of port items.
    • Add full support for groups inside group (ie subgraphs).
    • Fix current qan::PointGrid bugs and add "snap to grid" support.
    • Add more configuration options to qan::Edge (source and destination arrow configuration).
  • 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).

License

License

Copyright (c) 2017 BA