loom

Форк
0
59 строк · 1.7 Кб
1
#include <QtNodes/BasicGraphicsScene>
2
#include <QtNodes/ConnectionStyle>
3
#include <QtNodes/GraphicsView>
4
#include <QtNodes/StyleCollection>
5

6
#include <QAction>
7
#include <QScreen>
8
#include <QtWidgets/QApplication>
9

10
#include "SimpleGraphModel.hpp"
11

12
using QtNodes::BasicGraphicsScene;
13
using QtNodes::ConnectionStyle;
14
using QtNodes::GraphicsView;
15
using QtNodes::NodeRole;
16
using QtNodes::StyleCollection;
17

18
int main(int argc, char *argv[])
19
{
20
    QApplication app(argc, argv);
21

22
    SimpleGraphModel graphModel;
23

24
    // Initialize and connect two nodes.
25
    {
26
        NodeId id1 = graphModel.addNode();
27
        graphModel.setNodeData(id1, NodeRole::Position, QPointF(0, 0));
28

29
        NodeId id2 = graphModel.addNode();
30
        graphModel.setNodeData(id2, NodeRole::Position, QPointF(300, 300));
31

32
        graphModel.addConnection(ConnectionId{id1, 0, id2, 0});
33
    }
34

35
    auto scene = new BasicGraphicsScene(graphModel);
36

37
    GraphicsView view(scene);
38

39
    // Setup context menu for creating new nodes.
40
    view.setContextMenuPolicy(Qt::ActionsContextMenu);
41
    QAction createNodeAction(QStringLiteral("Create Node"), &view);
42
    QObject::connect(&createNodeAction, &QAction::triggered, [&]() {
43
        // Mouse position in scene coordinates.
44
        QPointF posView = view.mapToScene(view.mapFromGlobal(QCursor::pos()));
45

46
        NodeId const newId = graphModel.addNode();
47
        graphModel.setNodeData(newId, NodeRole::Position, posView);
48
    });
49
    view.insertAction(view.actions().front(), &createNodeAction);
50

51
    view.setWindowTitle("Simple Node Graph");
52
    view.resize(800, 600);
53

54
    // Center window.
55
    view.move(QApplication::primaryScreen()->availableGeometry().center() - view.rect().center());
56
    view.showNormal();
57

58
    return app.exec();
59
}
60

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.