|
|
|
|
@ -1,46 +1,105 @@
|
|
|
|
|
#include "mainwindow.h"
|
|
|
|
|
#include "ui_mainwindow.h"
|
|
|
|
|
#include <QMessageBox>
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
|
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
|
|
|
: QMainWindow(parent), ui(new Ui::MainWindow)
|
|
|
|
|
: QMainWindow(parent)
|
|
|
|
|
{
|
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
QWidget *central = new QWidget(this);
|
|
|
|
|
setCentralWidget(central);
|
|
|
|
|
|
|
|
|
|
// 表格
|
|
|
|
|
tableView = new QTableView(this);
|
|
|
|
|
model = new QStandardItemModel(this);
|
|
|
|
|
model->setHorizontalHeaderLabels({"学号", "姓名", "成绩"});
|
|
|
|
|
ui->tableView->setModel(model);
|
|
|
|
|
tableView->setModel(model);
|
|
|
|
|
|
|
|
|
|
// 输入框
|
|
|
|
|
idEdit = new QLineEdit();
|
|
|
|
|
idEdit->setPlaceholderText("学号"); // 占位符 && 水印文字
|
|
|
|
|
nameEdit = new QLineEdit();
|
|
|
|
|
nameEdit->setPlaceholderText("姓名");
|
|
|
|
|
scoreEdit = new QLineEdit();
|
|
|
|
|
scoreEdit->setPlaceholderText("成绩");
|
|
|
|
|
|
|
|
|
|
// 按钮
|
|
|
|
|
addButton = new QPushButton("添加");
|
|
|
|
|
deleteButton = new QPushButton("删除");
|
|
|
|
|
|
|
|
|
|
// 布局
|
|
|
|
|
// Edit水平布局
|
|
|
|
|
QHBoxLayout *formLayout_Edit = new QHBoxLayout();
|
|
|
|
|
formLayout_Edit->addWidget(idEdit);
|
|
|
|
|
formLayout_Edit->addWidget(nameEdit);
|
|
|
|
|
formLayout_Edit->addWidget(scoreEdit); // 使各个Edit之间水平分布
|
|
|
|
|
|
|
|
|
|
// Button水平布局
|
|
|
|
|
QHBoxLayout *formLayout_button = new QHBoxLayout();
|
|
|
|
|
formLayout_button->addWidget(addButton);
|
|
|
|
|
formLayout_button->addWidget(deleteButton);
|
|
|
|
|
|
|
|
|
|
// 垂直布局
|
|
|
|
|
QVBoxLayout *mainLayout = new QVBoxLayout();
|
|
|
|
|
mainLayout->addWidget(tableView); // index 0:垂直布局中第0个元素(表格)
|
|
|
|
|
mainLayout->addLayout(formLayout_Edit); // index 1:垂直布局中第1个元素(水平排列的输入框/按钮)
|
|
|
|
|
mainLayout->addLayout(formLayout_button); // index 2:垂直布局中第2个元素 (按钮)
|
|
|
|
|
|
|
|
|
|
// 控制大小
|
|
|
|
|
mainLayout->setStretch(0, 1); // 表格撑满
|
|
|
|
|
mainLayout->setStretch(1, 0); // 输入区最小
|
|
|
|
|
mainLayout->setContentsMargins(10, 10, 10, 10); // 让每一个控件都与边缘保持10个像素的距离
|
|
|
|
|
|
|
|
|
|
central->setLayout(mainLayout);
|
|
|
|
|
|
|
|
|
|
tableView->setSizePolicy(
|
|
|
|
|
QSizePolicy::Expanding,
|
|
|
|
|
QSizePolicy::Expanding);
|
|
|
|
|
|
|
|
|
|
// 信号槽
|
|
|
|
|
connect(addButton, &QPushButton::clicked, this, &MainWindow::on_addButton_clicked);
|
|
|
|
|
connect(deleteButton, &QPushButton::clicked, this, &MainWindow::on_deleteButton_clicked);
|
|
|
|
|
|
|
|
|
|
// 确认窗口大小
|
|
|
|
|
resize(900, 600);
|
|
|
|
|
setMinimumSize(800, 500);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 这个析构还必须得有
|
|
|
|
|
MainWindow::~MainWindow()
|
|
|
|
|
{
|
|
|
|
|
delete ui;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MainWindow::on_addButton_clicked()
|
|
|
|
|
{
|
|
|
|
|
// 添加学生信息的逻辑
|
|
|
|
|
Student stu;
|
|
|
|
|
stu.id = ui -> idEdit->text();
|
|
|
|
|
stu.name = ui -> nameEdit->text();
|
|
|
|
|
stu.score = ui -> scoreEdit->text().toDouble();
|
|
|
|
|
// 判空
|
|
|
|
|
stu.id = idEdit->text();
|
|
|
|
|
stu.name = nameEdit->text();
|
|
|
|
|
stu.score = scoreEdit->text().toDouble();
|
|
|
|
|
// qDebug() << "id : " << stu.id
|
|
|
|
|
// << "name : " << stu.name
|
|
|
|
|
// << "score : " << stu.score;
|
|
|
|
|
|
|
|
|
|
// 判空F
|
|
|
|
|
if (stu.id.isEmpty() || stu.name.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
QMessageBox::warning(this, "错误", "学号和姓名不能为空!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
students.push_back(stu);
|
|
|
|
|
|
|
|
|
|
// 刷新表格
|
|
|
|
|
refreshTable();
|
|
|
|
|
|
|
|
|
|
// 刷新输入框内容
|
|
|
|
|
ui->idEdit->clear();
|
|
|
|
|
ui->nameEdit->clear();
|
|
|
|
|
ui->scoreEdit->clear();
|
|
|
|
|
idEdit->clear();
|
|
|
|
|
nameEdit->clear();
|
|
|
|
|
scoreEdit->clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MainWindow::on_deleteButton_clicked()
|
|
|
|
|
{
|
|
|
|
|
int row = ui->tableView->currentIndex().row();
|
|
|
|
|
int row = tableView->currentIndex().row();
|
|
|
|
|
if (row < 0)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|