forked from exarus/GraphWays
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmainwindow.cpp
67 lines (57 loc) · 2.2 KB
/
mainwindow.cpp
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
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGraphicsScene>
#include <QPushButton>
#include <QLabel>
#include <GlobalSettings.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new GraphScene(0, 0, ui->graphicsView->height(),
ui->graphicsView->height(), ui->graphicsView);
/* Настройка окна весов ребер */
edgeVeightBox = new QSpinBox(this);
edgeVeightBox->setMinimum(INT_MIN + 1);
edgeVeightBox->setMaximum(INT_MAX - 1);
edgeVeightBox->setValue(GlobalSettings::getEdgeVeight());
connect(edgeVeightBox, SIGNAL(valueChanged(int)),
scene->getGraph(), SLOT(newEdgesVeight(int)));
/* Настройка кнопки поиска кратчайших путей */
shortestPathsButton = new QCommandLinkButton(
tr("Поиск кратчайших путей"), this);
connect(shortestPathsButton, SIGNAL(clicked()),
scene->getGraph(), SLOT(shortestWaysWindow()));
connect(ui->shortestPathsAction, SIGNAL(triggered()),
scene->getGraph(), SLOT(shortestWaysWindow()));
/* Настройка окна масштабирования */
scaleBox = new QSpinBox(this);
scaleBox->setMinimum(1);
scaleBox->setMaximum(INT_MAX);
scaleBox->setValue(100);
connect(scaleBox, SIGNAL(editingFinished()),
scene, SLOT(setScalePercentFromBox()));
/* Настройка отображения графа */
ui->graphicsView->setScene(scene);
ui->graphicsView->setRenderHint(QPainter::Antialiasing);
/* Настройка главного тулбара */
ui->mainToolBar->addWidget(new QLabel(tr("Масштаб ")));
ui->mainToolBar->addWidget(scaleBox);
ui->mainToolBar->addSeparator();
ui->mainToolBar->addWidget(new QLabel(tr("Вес новых ребер ")));
ui->mainToolBar->addWidget(edgeVeightBox);
ui->mainToolBar->addWidget(shortestPathsButton);
}
MainWindow::~MainWindow()
{
delete ui;
}
QSpinBox *MainWindow::getScaleBox() const
{
return scaleBox;
}
void MainWindow::setScaleBox(QSpinBox *value)
{
scaleBox = value;
}