Skip to content

Commit dcc01e7

Browse files
committed
Version 1.0
1 parent c188953 commit dcc01e7

33 files changed

+2543
-534
lines changed

AddElementDialog.cpp

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,45 @@
11
#include "AddElementDialog.h"
22
#include "ElectricalElementsManager.h"
33

4+
// Конструктор
45
AddElementDialog::AddElementDialog(QWidget* parent) : QDialog(parent)
56
{
6-
ui.setupUi(this);
7-
ElectricalElementsManager::getInstance().fillElementsList(ui.elementsListWidget);
7+
ui.setupUi(this);
8+
ElectricalElementsManager::getInstance().fillElementsList(ui.elementsListWidget);
89
}
910

11+
// Выбор элемента в списке
1012
void AddElementDialog::on_elementsListWidget_itemSelectionChanged()
1113
{
12-
ui.elementPropertiesTableWidget->clear();
13-
const auto& v = ui.elementsListWidget->selectedItems();
14-
if (!v.empty())
15-
{
16-
int row = ui.elementsListWidget->row(v[0]);
17-
ElectricalElementsManager::getInstance().fillPropertiesTable(ui.elementPropertiesTableWidget, row);
18-
}
14+
// Очистка таблицы свойств
15+
ui.elementPropertiesTableWidget->clear();
16+
const auto& v = ui.elementsListWidget->selectedItems();
17+
if (!v.empty())
18+
{
19+
// Если есть выбранный элемент, то заполнить таблицу свойств
20+
int row = ui.elementsListWidget->row(v[0]);
21+
ElectricalElementsManager::getInstance().fillPropertiesTable(ui.elementPropertiesTableWidget, row);
22+
}
1923
}
2024

25+
// Нажатие кнопки "ОК"
2126
void AddElementDialog::on_okButton_clicked()
2227
{
23-
const auto& v = ui.elementsListWidget->selectedItems();
24-
if (v.empty())
25-
{
26-
elementIndex = -1;
27-
elementProperties.clear();
28-
}
29-
else
30-
{
31-
elementIndex = ui.elementsListWidget->row(v[0]);
32-
elementProperties.clear();
33-
elementProperties.reserve(ui.elementPropertiesTableWidget->rowCount());
34-
for (int i = 0; i < ui.elementPropertiesTableWidget->rowCount(); i++)
35-
elementProperties.push_back(ui.elementPropertiesTableWidget->item(i, 1)->text());
36-
}
37-
accept();
28+
const auto& v = ui.elementsListWidget->selectedItems();
29+
// Если нет выбранного элемента
30+
if (v.empty())
31+
{
32+
elementIndex = -1;
33+
elementProperties.clear();
34+
}
35+
else
36+
{
37+
// Если есть, то заполнить номер и свойства
38+
elementIndex = ui.elementsListWidget->row(v[0]);
39+
elementProperties.clear();
40+
elementProperties.reserve(ui.elementPropertiesTableWidget->rowCount());
41+
for (int i = 0; i < ui.elementPropertiesTableWidget->rowCount(); i++)
42+
elementProperties.push_back(ui.elementPropertiesTableWidget->item(i, 1)->text());
43+
}
44+
accept();
3845
}

AddElementDialog.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,37 @@
22

33
#include "ui_AddElementWindow.h"
44

5+
// Диалог добавления элемента
56
class AddElementDialog : public QDialog
67
{
78
Q_OBJECT
89

910
public:
11+
// Конструктор
1012
AddElementDialog(QWidget* parent = nullptr);
11-
13+
// Получение единственного экземпляра класса
1214
static AddElementDialog& getInstance(QWidget* parent = nullptr)
1315
{
1416
static AddElementDialog* instance = new AddElementDialog(parent);
1517
return *instance;
1618
}
1719

20+
// Геттеры для номера элемента и его свойств
1821
int getElementIndex() const { return elementIndex; }
1922
const QStringList& getElementProperties() const { return elementProperties; }
2023

2124
private:
25+
// Элементы интерфейса
2226
Ui::AddElementDialog ui;
2327

28+
// Номер элемента
2429
int elementIndex = -1;
30+
// Свойства элемента
2531
QStringList elementProperties;
2632

2733
private slots:
34+
// Выбор элемента в списке
2835
void on_elementsListWidget_itemSelectionChanged();
36+
// Нажатие кнопки "ОК"
2937
void on_okButton_clicked();
3038
};

EditElementDialog.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include "EditElementDialog.h"
2+
#include "ElectricalElementsManager.h"
3+
4+
// Конструктор
5+
EditElementDialog::EditElementDialog(QWidget* parent) : QDialog(parent)
6+
{
7+
ui.setupUi(this);
8+
}
9+
10+
// Установка элемента
11+
void EditElementDialog::setElement(ElectricalElement* el)
12+
{
13+
el->fillPropertiesTable(ui.elementPropertiesTableWidget);
14+
}
15+
16+
// Нажатие кнопки "ОК"
17+
void EditElementDialog::on_okButton_clicked()
18+
{
19+
// Заполнение свойств элемента
20+
elementProperties.clear();
21+
elementProperties.reserve(ui.elementPropertiesTableWidget->rowCount());
22+
for (int i = 0; i < ui.elementPropertiesTableWidget->rowCount(); i++)
23+
elementProperties.push_back(ui.elementPropertiesTableWidget->item(i, 1)->text());
24+
accept();
25+
}

EditElementDialog.h

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#pragma once
2+
3+
#include "ui_EditElementWindow.h"
4+
#include "ElectricalElement.h"
5+
6+
// Диалог изменения элемента
7+
class EditElementDialog : public QDialog
8+
{
9+
Q_OBJECT
10+
11+
public:
12+
// Конструктор
13+
EditElementDialog(QWidget* parent = nullptr);
14+
// Получение единственного экземпляра класса
15+
static EditElementDialog& getInstance(QWidget* parent = nullptr)
16+
{
17+
static EditElementDialog* instance = new EditElementDialog(parent);
18+
return *instance;
19+
}
20+
21+
// Установка элемента
22+
void setElement(ElectricalElement* el);
23+
// Получение свойств элемента
24+
const QStringList& getElementProperties() const { return elementProperties; }
25+
26+
private:
27+
// Элементы интерфейса
28+
Ui::EditElementDialog ui;
29+
30+
// Свойства элемента
31+
QStringList elementProperties;
32+
33+
private slots:
34+
// Нажатие кнопки "ОК"
35+
void on_okButton_clicked();
36+
};

EditElementWindow.ui

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>EditElementDialog</class>
4+
<widget class="QDialog" name="EditElementDialog">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>400</width>
10+
<height>350</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Изменение элемента</string>
15+
</property>
16+
<layout class="QGridLayout" name="gridLayout">
17+
<item row="0" column="0">
18+
<widget class="QTableWidget" name="elementPropertiesTableWidget">
19+
<attribute name="horizontalHeaderMinimumSectionSize">
20+
<number>50</number>
21+
</attribute>
22+
<attribute name="horizontalHeaderDefaultSectionSize">
23+
<number>175</number>
24+
</attribute>
25+
<attribute name="horizontalHeaderStretchLastSection">
26+
<bool>true</bool>
27+
</attribute>
28+
<attribute name="verticalHeaderVisible">
29+
<bool>false</bool>
30+
</attribute>
31+
</widget>
32+
</item>
33+
<item row="1" column="0">
34+
<layout class="QHBoxLayout">
35+
<property name="spacing">
36+
<number>6</number>
37+
</property>
38+
<property name="leftMargin">
39+
<number>0</number>
40+
</property>
41+
<property name="topMargin">
42+
<number>0</number>
43+
</property>
44+
<property name="rightMargin">
45+
<number>0</number>
46+
</property>
47+
<property name="bottomMargin">
48+
<number>0</number>
49+
</property>
50+
<item>
51+
<spacer>
52+
<property name="orientation">
53+
<enum>Qt::Horizontal</enum>
54+
</property>
55+
<property name="sizeHint" stdset="0">
56+
<size>
57+
<width>131</width>
58+
<height>31</height>
59+
</size>
60+
</property>
61+
</spacer>
62+
</item>
63+
<item>
64+
<widget class="QPushButton" name="okButton">
65+
<property name="text">
66+
<string>ОК</string>
67+
</property>
68+
</widget>
69+
</item>
70+
<item>
71+
<widget class="QPushButton" name="cancelButton">
72+
<property name="text">
73+
<string>Отмена</string>
74+
</property>
75+
</widget>
76+
</item>
77+
</layout>
78+
</item>
79+
</layout>
80+
</widget>
81+
<resources/>
82+
<connections>
83+
<connection>
84+
<sender>cancelButton</sender>
85+
<signal>clicked()</signal>
86+
<receiver>EditElementDialog</receiver>
87+
<slot>reject()</slot>
88+
<hints>
89+
<hint type="sourcelabel">
90+
<x>341</x>
91+
<y>321</y>
92+
</hint>
93+
<hint type="destinationlabel">
94+
<x>199</x>
95+
<y>174</y>
96+
</hint>
97+
</hints>
98+
</connection>
99+
</connections>
100+
</ui>

0 commit comments

Comments
 (0)