From 77dc1153329d58a431ccf9a37c33d9ea4486ab4c Mon Sep 17 00:00:00 2001 From: wang-qin928 <2830862261@qq.com> Date: Wed, 17 Dec 2025 17:13:06 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=94=B9=E7=94=A8=E7=BA=AF=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=AE=9E=E7=8E=B0=E6=8E=A7=E4=BB=B6=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + StudentManager.pro | 2 -- mainwindow.cpp | 85 +++++++++++++++++++++++++++++++++++++++------- mainwindow.h | 15 +++++++- student.h | 6 ++-- 5 files changed, 90 insertions(+), 19 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..86a9657 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pro.user \ No newline at end of file diff --git a/StudentManager.pro b/StudentManager.pro index 5d9ad85..171b59b 100644 --- a/StudentManager.pro +++ b/StudentManager.pro @@ -23,8 +23,6 @@ HEADERS += \ mainwindow.h \ student.h -FORMS += \ - mainwindow.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin diff --git a/mainwindow.cpp b/mainwindow.cpp index d662445..f6bab88 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,46 +1,105 @@ #include "mainwindow.h" -#include "ui_mainwindow.h" #include +#include 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; diff --git a/mainwindow.h b/mainwindow.h index 19ce7aa..ee0088b 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -4,6 +4,11 @@ #include #include #include +#include +#include +#include +#include +#include #include "student.h" QT_BEGIN_NAMESPACE @@ -25,10 +30,18 @@ private slots: void on_deleteButton_clicked(); private: - Ui::MainWindow *ui; QVector students; // 学生信息列表 QStandardItemModel *model; // 数据模型 + // 纯代码声明控件 + QTableView *tableView; + QLineEdit *idEdit; + QLineEdit *nameEdit; + QLineEdit *scoreEdit; + + QPushButton *addButton; + QPushButton *deleteButton; + void refreshTable(); // 刷新表格显示 }; #endif // MAINWINDOW_H diff --git a/student.h b/student.h index f0376fa..f8a0603 100644 --- a/student.h +++ b/student.h @@ -6,9 +6,9 @@ class Student { public: - QString id; // 学号 - QString name; // 姓名 - double score; // 成绩 + QString id; // 学号 + QString name; // 姓名 + double score; // 成绩 }; #endif // STUDENT_H