Вертикальное и горизонтальное выравнивание

This commit is contained in:
2025-12-09 22:08:57 +03:00
parent 15e701ff4f
commit d9f40e90a5
5 changed files with 39 additions and 9 deletions

View File

@@ -75,15 +75,29 @@ void Canvas::mousePressEvent(QMouseEvent* event)
#ifdef _DEBUG
qDebug() << "Scene point in" << scene.x() << scene.y();
#endif
if (mode == Mode::None){
Point* p = findPointAt(scene);
if (p) {
draggedPoint = p;
dragOffset = scene - QPointF(*p->x, *p->y);
return;
}
}
else if (mode == Mode::Horizontal || mode == Mode::Vertical) {
Line* found = findAt(scene);
if (found) {
if (mode == Mode::Horizontal)
sys.addConstraintHorizontal(*found, constraints_count++);
else
sys.addConstraintVertical(*found, constraints_count++);
update();
}
mode = Mode::None;
after_constraint = true;
}
else if (mode == Mode::DrawingLine) {
if (!current_line) {
current_line = new Line();

View File

@@ -19,7 +19,9 @@ enum class Mode : int
None = 0,
DrawingLine = 1,
Parallel = 2,
Coincedent = 3
Coincedent = 3,
Horizontal = 4,
Vertical = 5
};
// Удобный тип для хранения пары параллельных линий (порядок не важен)

View File

@@ -30,8 +30,13 @@ void DRAWer_2_0::on_P2P_Button_clicked()
}
void DRAWer_2_0::on_FIX_Button_clicked()
void DRAWer_2_0::on_Horizontal_Button_clicked()
{
ui.widget->changeMode(Mode::Horizontal);
}
void DRAWer_2_0::on_Vertical_Button_clicked()
{
ui.widget->changeMode(Mode::Vertical);
}

View File

@@ -18,7 +18,9 @@ private slots:
void on_P2P_Button_clicked();
void on_FIX_Button_clicked();
void on_Horizontal_Button_clicked();
void on_Vertical_Button_clicked();
private:
Ui::DRAWer_2_0Class ui;

View File

@@ -66,9 +66,16 @@
</widget>
</item>
<item>
<widget class="QPushButton" name="FIX_Button">
<widget class="QPushButton" name="Vertical_Button">
<property name="text">
<string>Fix Point</string>
<string>Vertical</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="Horizontal_Button">
<property name="text">
<string>Horizontal</string>
</property>
</widget>
</item>
@@ -117,7 +124,7 @@
<x>0</x>
<y>0</y>
<width>700</width>
<height>22</height>
<height>21</height>
</rect>
</property>
</widget>