We got some proof of concept code running -
https://mindfusion.eu/_beta/QuickTest.zip import QtQuick 2.12
import QtQuick.Window 2.12
import MindFusion.Diagramming 0.1
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
DiagramView {
objectName: "diagramView"
}
}
auto diagramView = object->
findChild<DiagramView*>("diagramView");
if (diagramView)
{
auto diagram = diagramView->diagram();
auto node1 = QSharedPointer<DiagramNode>::create();
node1->setText("Hello,");
node1->setBounds(QRectF(40, 20, 200, 200));
diagram->items().add(node1);
auto node2 = QSharedPointer<DiagramNode>::create();
node2->setText("World!");
node2->setImageLocation(
QUrl("qrc:/tajmahal200.png"));
node2->setBounds(QRectF(300, 140, 180, 140));
diagram->items().add(node2);
QObject::connect(
diagram.get(), &Diagram::nodeCreated,
[=] (auto node)
{
node->setText("I'm new here");
});
}

- We'd prefer to use shared pointers for the various references kept between items. Unfortunately shared pointers cannot be used from QML, so you'll need to do the diagram controller code in C++ at this time as shown in example above. We'll probably have to add some parallel APIs to access raw QObject* pointers if you want to manipulate the diagram entirely in QML.
- DiagramNode is mostly a data object and rendering is done via a QML component bound to its properties. So we'll probably expose some templating system based on that down the line.
- We have no idea how to handle all the kits and platforms supported by Qt; the archive above contains Qt 5.13.1 / Windows / VC2017 64bit build. We guess we'll have to ship binaries on demand for the various combinations. From what we've heard, the Qt company is developing a marketplace to go along with their Qt 6 release, so that might be something they handle if we upload the source code with them.
Our developer will play with multi-touch APIs next.
Regards,
Slavcho