-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.cpp
More file actions
101 lines (91 loc) · 3.14 KB
/
Copy pathmainwindow.cpp
File metadata and controls
101 lines (91 loc) · 3.14 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
connectQss();
ui->setupUi(this);
ie_ = new InputEditor(ui->input);
logic_ = new Logic(ui->result);
ui->input->setFocus();
bindConnect();
}
MainWindow::~MainWindow()
{
delete ui;
delete logic_;
delete ie_;
}
/*!
* \brief MainWindow::inputPressed Обработчик для поля ввода данных, вызывается при нажатии на enter
*/
void MainWindow::inputPressed(){
on_compute_clicked();
}
/*!
* \brief MainWindow::connectQss Отвечает за подключение стилей
*/
void MainWindow::connectQss(){
QFile styleF;
styleF.setFileName(":/qss/qss/style.css");
styleF.open(QFile::ReadOnly);
qApp->setStyleSheet(styleF.readAll());
}
/*!
* \brief MainWindow::onClicked Обработчик на кнопки логических операций. Добавляет в поле ввода данных соответствующий символ
*/
void MainWindow::onClicked()
{
QPushButton* pButton = qobject_cast<QPushButton*>(sender()); //get sender button
if(pButton)
ie_->pushBack(ie_->AVIABLE_TRANSFORMATIONS[pButton->objectName()]);
}
/*!
* \brief MainWindow::bindConnect Создаёт связи между обработчиком события onClicked и нажатой кнопкой
*/
void MainWindow::bindConnect() const{
connect(ui->input, &QLineEdit::returnPressed, this, &MainWindow::inputPressed);
connect(ui->conjunction, &QPushButton::clicked, this, &MainWindow::onClicked);
connect(ui->disjunction, &QPushButton::clicked, this, &MainWindow::onClicked);
connect(ui->exclusive_disjunction, &QPushButton::clicked, this, &MainWindow::onClicked);
connect(ui->not_and, &QPushButton::clicked, this, &MainWindow::onClicked);
connect(ui->not_or, &QPushButton::clicked, this, &MainWindow::onClicked);
connect(ui->implication, &QPushButton::clicked, this, &MainWindow::onClicked);
connect(ui->converse, &QPushButton::clicked, this, &MainWindow::onClicked);
connect(ui->equivalent, &QPushButton::clicked, this, &MainWindow::onClicked);
connect(ui->negation, &QPushButton::clicked, this, &MainWindow::onClicked);
}
/*!
* \brief MainWindow::on_compute_clicked Обработчик нажатия на кнопку Вычислить
*/
void MainWindow::on_compute_clicked()
{
bool isCorrect = ie_->parse(ui->input->text());
if(isCorrect){
logic_->setVars(ie_->getVars());
logic_->compute();
}
}
/*!
* \brief MainWindow::on_f5_clicked Обработчик для кнопки СКНФ
*/
void MainWindow::on_f5_clicked()
{
bool isCorrect = ie_->parse(ui->input->text());
if(isCorrect){
logic_->setVars(ie_->getVars());
logic_->makeSKNF();
}
}
/*!
* \brief MainWindow::on_f4_clicked Обработчик для кнопки СДНФ
*/
void MainWindow::on_f4_clicked()
{
bool isCorrect = ie_->parse(ui->input->text());
if(isCorrect){
logic_->setVars(ie_->getVars());
logic_->makeSDNF();
}
}