使用QTableWidget
展示学生信息
整体架构
我们的目标是创建一个能够执行以下操作的应用程序:
- 显示学生信息表格: 在应用程序启动时,我们将学生信息从文件中读取并在
QTableWidget
中显示出来。 - 新增学生信息: 用户可以填写表单并点击“新增”按钮,以添加新的学生信息到表格中。
- 删除学生信息: 用户可以勾选表格中的复选框,然后点击“删除”按钮,以从表格中删除选中的学生信息。
- 查询学生信息: 用户可以按照姓名查询学生信息,并在表格中显示匹配的结果。
- 排序学生信息: 用户可以点击“升序”和“降序”按钮,对表格中的学生信息按照特定列进行升序和降序排列。
主要类和组件
在这个示例中,我们主要使用了以下Qt类和组件:
QDialog
: 应用程序的主窗口基类。QTableWidget
: 用于展示和编辑表格数据。QCheckBox
: 用于显示和处理复选框。QMessageBox
: 用于显示消息框。std::list
: 存储学生对象的列表。
主要功能
以下是这个示例应用程序的主要功能:
- 初始化学生信息: 当应用程序启动时,我们从文件中读取学生信息,并将其显示在
QTableWidget
中。 - 新增学生信息: 用户可以通过填写学生信息并点击“新增”按钮,将新的学生信息添加到表格中。
- 删除学生信息: 用户可以勾选表格中的复选框,然后点击“删除”按钮,从表格中删除选中的学生信息。
- 查询学生信息: 用户可以通过输入姓名来查询学生信息,匹配的学生信息将显示在表格中。
- 排序学生信息: 用户可以点击“升序”和“降序”按钮,对表格中的学生信息按照特定列进行升序和降序排列。
代码解释
以下是一些关键的代码片段和解释,帮助你理解如何实现这些功能:
list_init
函数用于初始化学生信息列表,从文件中读取数据并存储到student_list
中。table_init
函数用于将学生信息显示在QTableWidget
中,同时创建复选框并连接状态改变信号。on_pushButton_instert_clicked
槽函数处理新增学生按钮的点击事件,将学生信息添加到列表和表格,并更新文件。on_pushButton_delect_clicked
槽函数处理删除学生按钮的点击事件,删除选中的学生信息并更新表格和文件。on_pushButton_select_one_clicked
槽函数处理按姓名查询按钮的点击事件,将匹配的学生信息显示在表格中。on_pushButton_select_all_clicked
槽函数处理查询全部按钮的点击事件,显示所有学生信息。on_pushButton_ascend_clicked
槽函数处理升序排列按钮的点击事件,对学生信息按照某列升序排列并更新表格。on_pushButton_descend_clicked
槽函数处理降序排列按钮的点击事件,对学生信息按照某列降序排列并更新表格。table_chang
槽函数处理表格数据变化的信号,将编辑后的数据更新到student_list
和文件。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QDialog>
#include <QFile>
#include <QString>
#include "student.h"
#include <list>
#include <QTableWidget>
namespace Ui {
class MainWindow;
}
class MainWindow : public QDialog
{
Q_OBJECT
public:
explicit MainWindow(QString file_name, QWidget *parent = nullptr );
~MainWindow();
private slots:
void on_pushButton_instert_clicked();
void on_pushButton_descend_clicked();
void on_pushButton_delect_clicked();
void on_pushButton_select_one_clicked();
void on_pushButton_