-
Notifications
You must be signed in to change notification settings - Fork 948
Expand file tree
/
Copy pathmain.cpp
More file actions
68 lines (52 loc) · 2.24 KB
/
main.cpp
File metadata and controls
68 lines (52 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <QtNodes/DataFlowGraphModel>
#include <QtNodes/DataFlowGraphicsScene>
#include <QtNodes/GraphicsView>
#include <QtNodes/NodeData>
#include <QtNodes/NodeDelegateModelRegistry>
#include <QtGui/QScreen>
#include <QtWidgets/QApplication>
#include "ImageLoaderModel.hpp"
#include "ImageShowModel.hpp"
using QtNodes::ConnectionStyle;
using QtNodes::DataFlowGraphicsScene;
using QtNodes::DataFlowGraphModel;
using QtNodes::GraphicsView;
using QtNodes::NodeDelegateModelRegistry;
static std::shared_ptr<NodeDelegateModelRegistry> registerDataModels()
{
auto ret = std::make_shared<NodeDelegateModelRegistry>();
ret->registerModel<ImageShowModel>();
ret->registerModel<ImageLoaderModel>();
return ret;
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
std::shared_ptr<NodeDelegateModelRegistry> registry = registerDataModels();
DataFlowGraphModel dataFlowGraphModel(registry);
DataFlowGraphicsScene scene(dataFlowGraphModel);
GraphicsView view(&scene);
QObject::connect(&scene,
&DataFlowGraphicsScene::nodeDoubleClicked,
&dataFlowGraphModel,
[&dataFlowGraphModel](QtNodes::NodeId nodeId) {
QString name = dataFlowGraphModel
.nodeData(nodeId, QtNodes::NodeRole::Caption)
.value<QString>();
bool isEmbedded = dataFlowGraphModel
.nodeData(nodeId, QtNodes::NodeRole::WidgetEmbeddable)
.value<bool>();
auto w = dataFlowGraphModel.nodeData(nodeId, QtNodes::NodeRole::Widget)
.value<QWidget *>();
if (!isEmbedded && w) {
w->setWindowTitle(name + "_" + QString::number(nodeId));
w->show();
}
});
view.setWindowTitle("Data Flow: Resizable Images");
view.resize(800, 600);
// Center window.
view.move(QApplication::primaryScreen()->availableGeometry().center() - view.rect().center());
view.show();
return app.exec();
}