Files
bishe-QT_MainWindow/include/MappingConfigDialog.h
T
2026-05-01 10:51:39 +08:00

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