-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainWindow.cpp
124 lines (99 loc) · 3.8 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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <QColorDialog>
#include "MainWindow.h"
#include "ui_mainwindow.h"
#include "QActionGroup"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->initUi();
this->initSignal();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::initUi()
{
QActionGroup* toolGroup = new QActionGroup(this);
//绘图
toolGroup->addAction(this->ui->drawLine);
toolGroup->addAction(this->ui->drawCircle);
toolGroup->addAction(this->ui->drawEllipse);
toolGroup->addAction(this->ui->drawStar);
toolGroup->addAction(this->ui->drawSquare);
toolGroup->addAction(this->ui->drawHexgon);
toolGroup->addAction(this->ui->drawPolygon);
//填充
toolGroup->addAction(this->ui->fillPolygon);
toolGroup->addAction(this->ui->fillFence);
//变换
toolGroup->addAction(this->ui->selectTool);
toolGroup->addAction(this->ui->shearConversion);
toolGroup->addAction(this->ui->rotateConversion);
toolGroup->addAction(this->ui->scaleConversion);
toolGroup->addAction(this->ui->anchorConversion);
//设置为单选
toolGroup->setExclusionPolicy(QActionGroup::ExclusionPolicy::ExclusiveOptional);
//信号和槽
connect(toolGroup,&QActionGroup::triggered,this,&MainWindow::setTool);
}
void MainWindow::initSignal()
{
}
void MainWindow::setTool(QAction *action)
{
//根据不同的QAction,切换工具
qDebug()<<"void MainWindow::setTool(QAction *action)";
if(action==this->ui->selectTool){
this->ui->canvas->setTool(mainCanvas::SelectTool);
}else if(action==this->ui->drawPolygon){
qDebug()<<"set tool mainCanvas::AddPolygon";
this->ui->canvas->setTool(mainCanvas::AddPolygon);
}else if(action==this->ui->fillPolygon){
qDebug()<<"set tool mainCanvas::fillByScan";
this->ui->canvas->setTool(mainCanvas::FillByScan);
}else if(action==this->ui->fillFence){
qDebug()<<"set tool mainCanvas::fillByFence";
this->ui->canvas->setTool(mainCanvas::FillByFence);
}else if(action==this->ui->drawLine){
qDebug()<<"set tool mainCanvas::DrawLine";
this->ui->canvas->setTool(mainCanvas::DrawLine);
}else if(action==this->ui->drawCircle){
qDebug()<<"set tool mainCanvas::DrawCircle";
this->ui->canvas->setTool(mainCanvas::DrawCircle);
}else if(action==this->ui->drawEllipse){
qDebug()<<"set tool mainCanvas::DrawEllipse";
this->ui->canvas->setTool(mainCanvas::DrawEllipse);
}else if(action==this->ui->drawStar){
qDebug()<<"set tool mainCanvas::DrawStar";
this->ui->canvas->setTool(mainCanvas::DrawStar);
}else if(action==this->ui->drawSquare){
qDebug()<<"set tool mainCanvas::DrawSquare";
this->ui->canvas->setTool(mainCanvas::DrawSquare);
}else if(action==this->ui->drawHexgon){
qDebug()<<"set tool mainCanvas::DrawHexgon";
this->ui->canvas->setTool(mainCanvas::DrawHexgon);
}
else if(action==this->ui->rotateConversion){
this->ui->canvas->setTool(mainCanvas::EditRotate);
}
else if(action==this->ui->scaleConversion){
this->ui->canvas->setTool(mainCanvas::EditScale);
}
else if(action==this->ui->shearConversion){
this->ui->canvas->setTool(mainCanvas::EditZoom);
}
else if(action==this->ui->anchorConversion){
this->ui->canvas->setTool(mainCanvas::EditAnchor);
}
}
void MainWindow::setColorDialog()
{
QColorDialog dialog(Qt::red, this);
dialog.setOption(QColorDialog::ShowAlphaChannel);
dialog.exec();
QColor color = dialog.currentColor();
emit setColor(QVector4D(color.red(), color.green(), color.blue(), color.alpha()));
}