90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
#ifndef MAPPINGCONFIGDIALOG_H
|
|
#define MAPPINGCONFIGDIALOG_H
|
|
|
|
#include <QDialog>
|
|
#include <QTableWidget>
|
|
#include <QPushButton>
|
|
#include <QLineEdit>
|
|
#include <QMap>
|
|
#include <QTabWidget>
|
|
#include <QLabel>
|
|
|
|
/**
|
|
* @brief 映射配置对话框
|
|
*
|
|
* 用于配置:
|
|
* 1. 学号 -> 真实姓名 的映射
|
|
* 2. 班级编号 -> 真实班级名称 的映射
|
|
*
|
|
* 特性:
|
|
* - 双击单元格可直接编辑(类似Excel)
|
|
* - 自动从服务器加载已有映射
|
|
* - 一键保存到服务器
|
|
*/
|
|
class MappingConfigDialog : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit MappingConfigDialog(QWidget *parent = nullptr);
|
|
~MappingConfigDialog();
|
|
|
|
// 获取映射数据
|
|
QMap<QString, QString> getStudentNameMap() const { return m_studentNameMap; }
|
|
QMap<QString, QString> getClassNameMap() const { return m_classNameMap; }
|
|
|
|
// 设置映射数据(用于从服务器加载后更新)
|
|
void setStudentNameMap(const QMap<QString, QString> &map);
|
|
void setClassNameMap(const QMap<QString, QString> &map);
|
|
|
|
// 从表格收集数据到映射
|
|
void collectDataFromTables();
|
|
|
|
// 设置状态文本
|
|
void setStatus(const QString &status);
|
|
|
|
signals:
|
|
void mappingChanged(); // 映射数据已修改,需要保存
|
|
void requestSyncFromServer(); // 请求从服务器加载数据
|
|
|
|
private slots:
|
|
void onAddStudent();
|
|
void onDeleteStudent();
|
|
void onAddClass();
|
|
void onDeleteClass();
|
|
void onSave();
|
|
void onSyncToServer();
|
|
void onSyncFromServer();
|
|
|
|
private:
|
|
void setupUI();
|
|
void updateStudentTable();
|
|
void updateClassTable();
|
|
|
|
// UI组件
|
|
QTabWidget *m_tabWidget;
|
|
QLabel *m_statusLabel;
|
|
|
|
// 学号-姓名映射表
|
|
QTableWidget *m_studentTable;
|
|
QPushButton *m_addStudentBtn;
|
|
QPushButton *m_deleteStudentBtn;
|
|
|
|
// 班级编号-名称映射表
|
|
QTableWidget *m_classTable;
|
|
QPushButton *m_addClassBtn;
|
|
QPushButton *m_deleteClassBtn;
|
|
|
|
// 底部按钮
|
|
QPushButton *m_syncFromServerBtn;
|
|
QPushButton *m_syncToServerBtn;
|
|
QPushButton *m_saveBtn;
|
|
QPushButton *m_cancelBtn;
|
|
|
|
// 数据
|
|
QMap<QString, QString> m_studentNameMap; // 学号 -> 姓名
|
|
QMap<QString, QString> m_classNameMap; // 班级编号 -> 班级名称
|
|
};
|
|
|
|
#endif // MAPPINGCONFIGDIALOG_H
|