调整部分样式

This commit is contained in:
2026-05-11 09:11:30 +08:00
parent e40a72cd7c
commit c8a5a121c9
31 changed files with 2763 additions and 660 deletions
+51
View File
@@ -0,0 +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
- 但在实际使用场景中,此大小的复制性能影响微乎其微
- 移动语义仍然可用,且性能表现良好