-
Notifications
You must be signed in to change notification settings - Fork 0
/
widget.cpp
150 lines (128 loc) · 4.22 KB
/
widget.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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include "widget.h"
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QIntValidator>
#include <QString>
#include <QDebug>
#include <QFont>
#include <QMessageBox>
#include <QApplication>
//extern bool distribute[1];
//extern int memory[1];
//extern int algo[1];
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//设置窗口固定大小
setFixedSize(400,170);
QFont font1("STKaiti",25,75);
QFont font2("STKaiti",18,75);
QLabel * welcome = new QLabel;
welcome->setText("动态分区分配模拟器");
welcome->setFont(font1);
welcome->move(80,0);
welcome->setParent(this);
//设置文本提示
QLabel * hint = new QLabel;
hint->setText("自定义内存大小");
hint->setFont(font2);
hint->move(25,48);
hint->setParent(this);
//设置输入文本框 获取自定义内存大小
QLineEdit * MemorySize = new QLineEdit;
MemorySize->setPlaceholderText("范围0-9999");
MemorySize->setGeometry(180,48,90,20);
MemorySize->setParent(this);
MemorySize->setValidator(new QIntValidator(0,9999,this));
//设置确认按钮
QPushButton *confirmBtn = new QPushButton;
confirmBtn->setParent(this);
confirmBtn->setText("确认");
confirmBtn->move(300,44);
//设置连接存储用户输入的内存大小
connect(confirmBtn,&QPushButton::clicked,this,[=](){
QString memory1 = MemorySize->text();
if(memory1 == "")
{
QMessageBox::critical(NULL,"提示","请输入合法数字",QMessageBox::Yes);
distribute[0] = false;
qDebug() << "未输入合法数字!";
}
else
{
QMessageBox::information(NULL, "内存分配", "自定义内存大小分配成功!", QMessageBox::Yes, QMessageBox::Yes);
memory = memory1.toInt();
distribute[0] = true;
}
});
//选择分配方式
QLabel * choose = new QLabel;
choose->setText("请选择分配算法");
choose->move(25,90);
choose->setFont(font2);
choose->setParent(this);
QPushButton * firstAdaptBtn = new QPushButton;
firstAdaptBtn->setText("首次适应算法");
firstAdaptBtn->move(20,120);
firstAdaptBtn->setParent(this);
//跳转
connect(firstAdaptBtn,&QPushButton::clicked,[=](){
if(distribute[0] == false)
{
QMessageBox::critical(NULL,"错误","没有指定内存大小!",QMessageBox::Yes);
}
else
{
algorithmScene = new AdaptAlgo;
connect(this,SIGNAL(chooseAlgo(int)),algorithmScene,SLOT(getAlgo(int)));
emit chooseAlgo(1);
connect(this,SIGNAL(pushData(int)),algorithmScene,SLOT(getData(int)));
emit pushData(memory);
this->hide();
algorithmScene->show();
//监听返回按钮的信号
connect(algorithmScene,&AdaptAlgo::backMainScene,this,[=](){
algorithmScene->hide();
this->show();
});
}
});
QPushButton * bestAdaptBtn = new QPushButton;
bestAdaptBtn->setText("最佳适应算法");
bestAdaptBtn->move(160,120);
bestAdaptBtn->setParent(this);
connect(bestAdaptBtn,&QPushButton::clicked,[=](){
if(distribute[0] == false)
{
QMessageBox::critical(NULL,"错误","没有指定内存大小!",QMessageBox::Yes);
}
else
{
algorithmScene = new AdaptAlgo;
connect(this,SIGNAL(chooseAlgo(int)),algorithmScene,SLOT(getAlgo(int)));
emit chooseAlgo(2);
connect(this,SIGNAL(pushData(int)),algorithmScene,SLOT(getData(int)));
emit pushData(memory);
this->hide();
algorithmScene->show();
//监听返回按钮的信号
connect(algorithmScene,&AdaptAlgo::backMainScene,this,[=](){
algorithmScene->hide();
this->show();
});
}
});
//退出按钮
QPushButton * quitBtn = new QPushButton;
quitBtn->setText("退出");
quitBtn->move(300,120);
quitBtn->setParent(this);
connect(quitBtn,&QPushButton::clicked,[=](){
QApplication *app;
app->quit();
});
}
Widget::~Widget()
{
}