#ifndef MAPPINGCONFIGDIALOG_H #define MAPPINGCONFIGDIALOG_H #include #include #include #include #include #include #include /** * @brief 映射配置对话框 * * 用于配置: * 1. 学号 -> 真实姓名 的映射 * 2. 班级编号 -> 真实班级名称 的映射 * * 特性: * - 双击单元格可直接编辑(类似Excel) * - 自动从服务器加载已有映射 * - 一键保存到服务器 */ class MappingConfigDialog : public QDialog { Q_OBJECT public: explicit MappingConfigDialog(QWidget *parent = nullptr); ~MappingConfigDialog(); // 获取映射数据 QMap getStudentNameMap() const { return m_studentNameMap; } QMap getClassNameMap() const { return m_classNameMap; } // 设置映射数据(用于从服务器加载后更新) void setStudentNameMap(const QMap &map); void setClassNameMap(const QMap &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 m_studentNameMap; // 学号 -> 姓名 QMap m_classNameMap; // 班级编号 -> 班级名称 }; #endif // MAPPINGCONFIGDIALOG_H