修改文件换行符,修正轮班图元长度计算问题

This commit is contained in:
2026-08-19 11:55:10 +08:00
parent 176b53b654
commit a274b75705
116 changed files with 68711 additions and 68660 deletions
+50 -50
View File
@@ -1,51 +1,51 @@
# DateItemModel 修改总结
## 修改概述
已成功将 `DateItemModel` 中的 `QStringList` 成员变量替换为 `std::array<QString, N>` 以提高类型安全性和访问性能。
## 修改的文件
### 1. scene/ViewModels.h
- 添加了 `#include <array>`
- 将 `QStringList` 成员变量替换为 `std::array<QString, N>`:
- `QStringList dataMap` → `std::array<QString, 16> dataMap`
- `QStringList daysMap` → `std::array<QString, 31> daysMap`
- `QStringList monthsMap` → `std::array<QString, 12> monthsMap`
- `QStringList weeksMap` → `std::array<QString, 7> weeksMap`
- `QStringList hoursMap` → `std::array<QString, 24> hoursMap`
- `QMap<int, QString> yearsMap` → `std::array<QString, 16> yearsArray` + `int startYear`
- 添加了默认构造函数声明
- 移除了 `createDefaultReplaceModel` 函数声明
### 2. scene/ViewModels.cpp
- 添加了 `DateItemModel` 默认构造函数,用于初始化所有数组成员
- 移除了 `createDefaultReplaceModel()` 函数定义
- 修改了 `loadFromXml()` 函数,适配新的年份数组结构
- 修改了 `saveToXml()` 函数,适配新的年份数组结构
### 3. DateVarSet.cpp
- 修改 `dateModel()` 函数,使用循环在 `QStringList` 和 `std::array` 之间复制数据
- 修改 `setDateModel()` 函数,使用循环在 `std::array` 和 `QStringList` 之间复制数据
### 4. scene/DateReplaceEditor.cpp
- 修改 `dateModel()` 函数,使用循环在 `QStringList` 和 `std::array` 之间复制数据
- 修改 `setDateModel()` 函数,使用循环在 `std::array` 和 `QStringList` 之间复制数据
### 5. scene/BarcodeEditor.cpp
- 修改检查空值的逻辑(从 `.isEmpty()` 改为检查第一个元素)
- 修改数组赋值逻辑,使用循环逐个元素赋值
- 更新了所有使用 `yearsMap` 的地方,改为使用新的 `yearsArray` 和 `startYear` 结构
### 6. scene/ItemCommon.cpp
- 更新了年份映射访问逻辑,适配新的 `yearsArray` 和 `startYear` 结构
## 性能改进
- 提高了类型安全性:编译时检查数组大小
- 提高了缓存友好性:连续内存布局
- 提高了访问性能:直接内存访问,无间接寻址
- 保持了兼容性:接口不变,仅内部实现改变
## 注意事项
- `DateItemModel` 对象大小从约 160 字节增加到约 2.2KB
- 但在实际使用场景中,此大小的复制性能影响微乎其微
# DateItemModel 修改总结
## 修改概述
已成功将 `DateItemModel` 中的 `QStringList` 成员变量替换为 `std::array<QString, N>` 以提高类型安全性和访问性能。
## 修改的文件
### 1. scene/ViewModels.h
- 添加了 `#include <array>`
- 将 `QStringList` 成员变量替换为 `std::array<QString, N>`:
- `QStringList dataMap` → `std::array<QString, 16> dataMap`
- `QStringList daysMap` → `std::array<QString, 31> daysMap`
- `QStringList monthsMap` → `std::array<QString, 12> monthsMap`
- `QStringList weeksMap` → `std::array<QString, 7> weeksMap`
- `QStringList hoursMap` → `std::array<QString, 24> hoursMap`
- `QMap<int, QString> yearsMap` → `std::array<QString, 16> yearsArray` + `int startYear`
- 添加了默认构造函数声明
- 移除了 `createDefaultReplaceModel` 函数声明
### 2. scene/ViewModels.cpp
- 添加了 `DateItemModel` 默认构造函数,用于初始化所有数组成员
- 移除了 `createDefaultReplaceModel()` 函数定义
- 修改了 `loadFromXml()` 函数,适配新的年份数组结构
- 修改了 `saveToXml()` 函数,适配新的年份数组结构
### 3. DateVarSet.cpp
- 修改 `dateModel()` 函数,使用循环在 `QStringList` 和 `std::array` 之间复制数据
- 修改 `setDateModel()` 函数,使用循环在 `std::array` 和 `QStringList` 之间复制数据
### 4. scene/DateReplaceEditor.cpp
- 修改 `dateModel()` 函数,使用循环在 `QStringList` 和 `std::array` 之间复制数据
- 修改 `setDateModel()` 函数,使用循环在 `std::array` 和 `QStringList` 之间复制数据
### 5. scene/BarcodeEditor.cpp
- 修改检查空值的逻辑(从 `.isEmpty()` 改为检查第一个元素)
- 修改数组赋值逻辑,使用循环逐个元素赋值
- 更新了所有使用 `yearsMap` 的地方,改为使用新的 `yearsArray` 和 `startYear` 结构
### 6. scene/ItemCommon.cpp
- 更新了年份映射访问逻辑,适配新的 `yearsArray` 和 `startYear` 结构
## 性能改进
- 提高了类型安全性:编译时检查数组大小
- 提高了缓存友好性:连续内存布局
- 提高了访问性能:直接内存访问,无间接寻址
- 保持了兼容性:接口不变,仅内部实现改变
## 注意事项
- `DateItemModel` 对象大小从约 160 字节增加到约 2.2KB
- 但在实际使用场景中,此大小的复制性能影响微乎其微
- 移动语义仍然可用,且性能表现良好