QT 版翻译者资料库

文章目录

  • [1. QT 版翻译者资料库](#1. QT 版翻译者资料库)

    • [1.1 功能模块](#1.1 功能模块)
      • [旧版 Access 97 格式说明](#旧版 Access 97 格式说明)
    • [1.2 目录结构](#1.2 目录结构)
    • [1.3 编译验证](#1.3 编译验证)
    • [1.4 构建环境](#1.4 构建环境)
      • [Windows 下构建(Qt 官方安装包,MinGW 示例)](#Windows 下构建(Qt 官方安装包,MinGW 示例))
      • [MSVC 示例](#MSVC 示例)
    • [1.5 从旧版 VB6 迁移数据](#1.5 从旧版 VB6 迁移数据)
    • [1.6 数据库结构](#1.6 数据库结构)
    • [1.7 与原版的实现差异](#1.7 与原版的实现差异)
  • [2. VB 版翻译者资料库主界面](#2. VB 版翻译者资料库主界面)

  • [3. QT 版翻译者资料库操作演示](#3. QT 版翻译者资料库操作演示)

  • 本项目是用 Qt6(C++/Widgets)重写的【翻译者资料库】,功能对齐原 VB6 版本,涵盖资料管家、词库句库整理、文本处理、对照制作、备份恢复及旧版 Access 数据自动迁移等模块。存储由 Access 改为 SQLite,界面采用原生配色,支持多库分类管理、增删改查、导入导出与全屏阅读,并已在 Qt 6.7.2 环境编译验证通过,15 项核心逻辑测试全部通过。

1. QT 版翻译者资料库

用 Qt6 (C++ / Widgets) 重写的「翻译者资料库」,功能与原 VB6 版本一致。

1.1 功能模块

模块 对应 VB6 窗体 说明
资料管家 frmSelDataLib / frmData / frmDataManage / frmFullScreen_DataKeeper 多资料库管理、分类浏览/管理、增删改、导入导出、RTF 正文附件、全屏阅读
词库整理 frmClassWordManage / frmFindClassWord 分类词汇库的增删改查、导入导出
句库整理 frmSentenceManage / frmFindSentence 句子库_1 的增删改查(含状态字段)、导入导出
文本处理 frmTextProcess 删行删字符、英汉/汉英折行、按标点断句、查找替换、列表导入
对照制作 frmCEContrast / frmAddEnter 中英/英汉逐行对照,缺行补 ######空缺#######,可选段首缩进
备份/恢复 frmBackup / frmRestore 备份 SQLite 数据库 + DataKeeper RTF 附件,按时间戳恢复
数据迁移 Module1.bas 启动时自动检测旧 huawei.mak/mdb(程序 data 目录及旧版默认路径),新库无数据时静默导入 SQLite

旧版 Access 97 格式说明

原版 huawei.mdb 为 Access 97(Jet 3.5)格式,ACE ODBC 驱动无法直接打开(报 "Cannot open a database created with a previous version")。解决方法:先用 DAO 3.6 的 CompactDatabase(src, dst, ";LANGID=0x0804;CP=936", 64) 转换为 Access 2000 格式(32 位进程执行),转换后的 huawei.mdb 放入程序 data\ 目录即可被自动迁移读取。

1.2 目录结构

复制代码
QT版翻译者资料库/
├── CMakeLists.txt
├── README.md
└── src/
    ├── main.cpp              # 启动:单实例锁、打开数据库、应用配色
    ├── appglobals.h/.cpp     # 全局变量、路径规则、配色系统(对应 Module1.bas)
    ├── textutils.h/.cpp      # 字符串工具、GBK 读写、导入格式解析、RTF 转换
    ├── database.h/.cpp       # 数据库管理器(SQLite,表结构同原 Access 库)
    ├── mainwindow.h/.cpp     # 主窗体(三个顶菜单:实用工具/系统工具/帮助)
    ├── seldatalibdialog.h/.cpp  # 资料库选择/新建/改名
    ├── databrowser.h/.cpp    # 资料浏览
    ├── datamanager.h/.cpp    # 资料管理(导入/导出/增删改/搜索/RTF 同步)
    ├── fullscreenreader.h/.cpp  # 全屏阅读器(保存/打印/字体/RTF)
    ├── listmanager.h/.cpp    # 词库/句库整理(通用,配置化)
    ├── finddialog.h/.cpp     # 通用查找(资料/词汇/句子三合一)
    ├── textprocessor.h/.cpp  # 文本处理器
    ├── cecontrast.h/.cpp     # 对照制作
    ├── backupdialog.h/.cpp   # 备份/恢复
    └── ...(其余模块)

运行后在程序目录自动生成:

复制代码
data/huawei.db          # SQLite 数据库(表结构与原 Access 库一致)
data/DataKeeper/*.rtf   # 资料正文附件(类别_标题.rtf)
backup/                 # 备份点目录

1.3 编译验证

本项目已在本机完成编译与逻辑验证(Qt 6.7.2 MinGW 13.1,安装于 C:\Qt):

  • 全部源码编译通过,产物 翻译者资料库.exe(release/ 目录含已部署 Qt DLL 的可直接运行版本)。
  • 15 项核心逻辑无界面测试全部通过:数据库打开/默认 3 库/新建库/编号规范化/类别查询、引号转换往返、中英文定位、资料列表与词汇列表解析、空白行清理、RTF 生成与解析往返、GBK 读写往返、删除资料库。

注意事项

  • 工程路径不要包含中文 :MinGW 的 make/moc 在中文路径下会因代码页问题失败(错误现象为 AutogenInfo.json is not readable)。若源码在中文目录,请复制到 ASCII 路径(如 C:\Temp\TranslatorDataLib)再构建。

1.4 构建环境

  • Qt 6.2 及以上(需要 Core5Compat 模块;安装 Qt 时勾选 "Qt 5 Compatibility Module")
  • 组件:Widgets、Sql、PrintSupport、Core5Compat
  • CMake ≥ 3.16
  • 编译器:MSVC 2019/2022 或 MinGW 8+(Windows);Clang/GCC(Linux/macOS)

Windows 下构建(Qt 官方安装包,MinGW 示例)

bat 复制代码
set PATH=C:\Qt\6.7.2\mingw_64\bin;C:\Qt\Tools\CMake_64\bin;C:\Qt\Tools\mingw1120_64\bin;%PATH%
cd QT版翻译者资料库
cmake -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
cmake --build build -j

MSVC 示例

bat 复制代码
:: 在 "x64 Native Tools Command Prompt for VS 2022" 中
set PATH=C:\Qt\6.7.2\msvc2019_64\bin;%PATH%
cd QT版翻译者资料库
cmake -B build -G "Ninja" -DCMAKE_PREFIX_PATH=C:\Qt\6.7.2\msvc2019_64 -DCMAKE_BUILD_TYPE=Release
cmake --build build -j

生成的可执行文件为 build/翻译者资料库.exe(MinGW 直接运行;MSVC 发布时需 windeployqt 拷贝 Qt DLL)。

1.5 从旧版 VB6 迁移数据

  1. 把旧项目 data 目录整体拷贝到本程序目录(或至少拿到 huawei.mdb 与 DataKeeper\*.rtf)。
  2. 启动本程序,菜单【数据 → 导入旧版 Access 数据】,选择 huawei.mdb。
    • 要求系统已安装 Access ODBC 驱动(Access Database Engine,多数 Windows 已自带)。
    • 所有表(资料库列表、资料库_N、分类词汇库、句子库_1、帮助向导)将原样迁入 SQLite,中文表名/字段名保持不变。
  3. 把旧 DataKeeper\*.rtf 拷贝到 data\DataKeeper\,资料正文即可全屏显示。

1.6 数据库结构

表 字段
资料库列表 编号, 名称(名称形如 资料库_我的资料)
资料库_N 类别, 编号, 标题, 正文
分类词汇库 类别, 编号, 单词, 注释
句子库_1 类别, 编号, 句子, 注释, 状态
帮助向导 类别, 编号, 标题, 正文
  • 编号规则:每类别内 1...n 连续,切换类别/增删记录后自动规范化。
  • 标题查重:同类别下不允许相同标题/词汇/句子。
  • 文本兼容:导入导出默认 GBK 编码(自动识别 UTF-8),标题/正文中的半角引号入库前转为全角(与旧数据格式互通)。

1.7 与原版的实现差异

  • 界面采用 Windows 原生配色(原版的系统配色窗体 frmSetColor 未移植)。
  • 存储由 Access (.mdb/ADO) 改为 SQLite(Qt SQL),界面行为与业务规则保持一致。
  • RTF 正文采用内置解析/生成(标准 ansicpg936 RTF),不再依赖 RichTextBox 控件;Word 旧附件可正常读取。
  • 原版三个查找窗体(frmFindData/frmFindClassWord/frmFindSentence)合并为一个通用查找组件;frmAddEnter 并入对照制作的"段首缩进"选项。
  • 原版 frmFullScreen_DataKeeper 的"机器朗读"按钮在旧源码中本就未实现(残留死代码),未予移植。

2. VB 版翻译者资料库主界面

3. QT 版翻译者资料库操作演示