修改适配非等宽字体的计数器
This commit is contained in:
+38
-39
@@ -395,51 +395,50 @@ PicScene (QGraphicsScene) # 场景,管理所有图元
|
||||
```
|
||||
|
||||
### 6.2 作业文件格式
|
||||
作业文件使用 XML 格式(根元素为 `VBfiles`),由 `PicSceneLoader` 读写。要点如下:
|
||||
|
||||
作业文件使用XML格式(VBfiles结构),保存场景内容和打印设置:
|
||||
- 根元素: `<VBfiles Version="1.0">`(保存时会写入 `Version` 属性及一个简单的 DOCTYPE)。
|
||||
- 每个图元为一个 `<VBfile>` 节点,常见子元素:
|
||||
- `<pointer_x>` / `<pointer_y>`: 图元位置(浮点数)
|
||||
- `<Condition>`: 特殊条件标志,0/1
|
||||
- `<CatchStartValue>` / `<CatchValue>`: 与 Catch 相关的计数器起始/当前值(整数)
|
||||
- `<itemAttrs ... />`: 图元属性以属性集合的形式保存(见下),`PicSceneLoader` 通过属性解析并传给具体图元对象
|
||||
- `<html_src>`: 包裹图元 HTML 表示的 CDATA(编辑器中使用的 HTML 内容)
|
||||
|
||||
示例(简化):
|
||||
|
||||
```xml
|
||||
<VBfiles>
|
||||
<!-- 打印设置 -->
|
||||
<PrintSettings timeTriggerPrintMode="0" triggerInterval="90" ... />
|
||||
<!-- 文本图元 -->
|
||||
<VBfile>
|
||||
<pointer_x>55</pointer_x>
|
||||
<pointer_y>0</pointer_y>
|
||||
...
|
||||
<itemAttrs sourceType="1" dir="0" letterSpace="1" fontFamilay="WenQuanYi7" source="FGJ" ... />
|
||||
</VBfile>
|
||||
<!-- 日期图元 -->
|
||||
<VBfile>
|
||||
<pointer_x>55</pointer_x>
|
||||
<pointer_y>0</pointer_y>
|
||||
...
|
||||
<itemAttrs sourceType="3" datetimePattern="HH:mm:ss" ... />
|
||||
</VBfile>
|
||||
<!-- 计数器图元 -->
|
||||
<VBfile>
|
||||
<pointer_x>83</pointer_x>
|
||||
<pointer_y>17</pointer_y>
|
||||
...
|
||||
<itemAttrs sourceType="6" counter_type="7" digital_num="8" ... />
|
||||
</VBfile>
|
||||
<!-- 条码/二维码图元 -->
|
||||
<VBfile>
|
||||
<pointer_x>0</pointer_x>
|
||||
<pointer_y>0</pointer_y>
|
||||
...
|
||||
<itemAttrs sourceType="5" dir="0" barcodeContentPattern="dr66re{t}{c}" barcodeType="2" qrcodeFormat="0" ... />
|
||||
</VBfile>
|
||||
<!-- 图片图元 -->
|
||||
<VBfile>
|
||||
<pointer_x>0</pointer_x>
|
||||
<pointer_y>0</pointer_y>
|
||||
...
|
||||
<itemAttrs sourceType="2" dir="0" source="/home/plg/doc/scene.png" ... />
|
||||
</VBfile>
|
||||
<VBfiles Version="1.0">
|
||||
<VBfile>
|
||||
<pointer_x>55</pointer_x>
|
||||
<pointer_y>0</pointer_y>
|
||||
<Condition>0</Condition>
|
||||
<CatchStartValue>-1</CatchStartValue>
|
||||
<CatchValue>-1</CatchValue>
|
||||
<itemAttrs sourceType="1" dir="0" letterSpace="1" fontFamilay="WenQuanYi7" source="FGJ" />
|
||||
<html_src><![CDATA[...item html...]]></html_src>
|
||||
</VBfile>
|
||||
<!-- 更多 VBfile ... -->
|
||||
<!-- PrintSettings 以属性形式保存在一个空元素中 -->
|
||||
<PrintSettings timeTriggerPrintMode="0" triggerInterval="90" ... />
|
||||
</VBfiles>
|
||||
```
|
||||
|
||||
其他细节:
|
||||
- `itemAttrs` 中常见属性由各图元实现 `saveAttrs` / `setAttrs` 控制,通用属性包括 `sourceType`(必有)、`dir`、`boldMultiple`、`colorReversal`("true"/"false")、`letterSpace`、`fontFamilay`(注意拼写)以及 `source`(图元内容或图片路径)等。
|
||||
- `html_src` 使用 CDATA 保存 `toHtml()` 的内容,加载时会把 CDATA 拼接并通过 `setHtml()` 恢复。
|
||||
- `PrintSettings` 由 `PrintSettingModel::saveToXml`/`loadFromXml` 通过属性读写打印相关配置(保存时作为空元素写出属性)。`PicSceneLoader` 在解析 `VBfiles` 时会识别 `PrintSettings`(位置可以在文件中任意出现,保存实现默认写在所有 `<VBfile>` 之后)。
|
||||
- 图元类型(`sourceType`)的数值映射(见 `scene/pictextitem.h`):
|
||||
- `0` = `UNKNOWN`
|
||||
- `1` = `TEXT`
|
||||
- `2` = `IMAGE`
|
||||
- `3` = `DATETIME`
|
||||
- `4` = `SCHEDULE_SHIFT`
|
||||
- `5` = `CODE`(一维/二维码)
|
||||
- `6` = `COUNTER`
|
||||
|
||||
该节已根据 `scene/PicSceneLoader.cpp` 的实际实现和 `Printsetting.cpp` 中的读写逻辑做了校正(包含 `Condition`/`Catch*` 字段、`Version` 属性、`html_src` CDATA、以及 `PrintSettings` 的属性化保存)。
|
||||
|
||||
### 6.3 关键类说明
|
||||
|
||||
- **PicSceneLoader** - 场景文件的加载/保存/预览,负责XML序列化/反序列化
|
||||
|
||||
Reference in New Issue
Block a user