Skip to content

🔗 C++14 network/graph visualization library / Qt node editor.

License

Notifications You must be signed in to change notification settings

yifengzhimo/QuickQanava

Repository files navigation

QuickQanava

Overview | Dependencies | Building | Roadmap | License

Build Status (Linux/g++6/Qt5.10 - OSX/Clang/Qt5.9)

Build status (Windows/MSVC 2015 x64/Qt5.10/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++5.4 (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), if you are looking for a pure C++/QGraphicsView solution, have a look to: NodeEditor

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.9.4:
    • QuickContainers (Qt/QML observable adapter for STL or Qt containers):
      • Redesign QuickContainers: qcm::ContainerModel<> memory footprint is too high (inheritance from QAbstractItemModel comes with a strong virtual and signals/slots overhead)
      • Add support for standard library containers.
      • Increase test coverage.
    • Fix port remove issues.
    • Add full CMake support..
  • v0.9.5:
    • 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.
  • v0.9.6:
    • Add more configuration options to qan::Edge (source and destination arrow configuration).
  • v1.0.0: Advanced edge visualization
    • GTpo (Configurable topology library):
      • Redesign using adjacency matrix, immutable and full move semantic support.
      • Push test coverage to 100% (ie increase coverage for subgroups).- [80%] Redesign qan::Graph interface for creating content.
    • Publish the 4k sample (40k is probably too much for QML without dedicated culling and LOD code).

License

License

Copyright (c) 2017 BA

About

🔗 C++14 network/graph visualization library / Qt node editor.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 83.2%
  • QML 14.7%
  • Other 2.1%