文匣(WenJia)— Qt 原生重构

本地 Markdown + SVN 版本管理的桌面文库。从 Electron 重写为 Qt 三层壳(WenJia.exe → WenJiaUI.dll → WenJiaCore.dll),Core 零 Qt、纯 C ABI,导航与检索已落地。

本地 Markdown + SVN 版本管理的桌面文库。从 Electron 重写为 Qt 三层壳(WenJia.exe → WenJiaUI.dll → WenJiaCore.dll),Core 零 Qt、纯 C ABI。Electron 首发见 《功能介绍(Electron)》


一、软件概览

文匣面向需要「离线优先、版本可追溯」的个人与团队知识管理:笔记就是磁盘上的 .md,版本与协作走 SVN(本机 file:// 或远程 trunk),而不是云账号、订阅或专有同步。

Qt 版产品边界比 Electron 首发更收束:

首版不做账户、订阅、云同步、多文库。

文匣主工作台

主界面:文库树、笔记列表、Markdown 编辑与预览、右侧大纲/历史


二、主要功能

2.1 工作台布局

无边框窗口 + 原生菜单栏。最小宽度约 1100px 时四栏同时展开。

区域 说明
标题栏 / 菜单 文件、编辑、视图、跳转、帮助
左栏 嵌套文件夹树
中栏 当前文件夹笔记列表(摘要、时间、标签、置顶)
编辑区 标题、工具栏、编辑 / 预览分栏
右栏 大纲、修订历史、元数据
底栏 SVN 状态、路径、字数与行列

2.2 Markdown 编辑与预览

2.3 导航分流

Electron 版里 Ctrl+P / Ctrl+K 多为桩。Qt 版拆成两件事,避免「一个框干两件事」:

入口 快捷键 做什么
快速打开 / 命令 Ctrl+P 按文件名跳转,或执行设置、捕获、历史等命令
全局搜索 Ctrl+K 标题与正文命中,支持仅标题 / 仅标签
跳转 → 最近 菜单 真实 MRU:打开、保存、捕获后记录,跨会话保留

命令面板

Ctrl+P:按文件名打开,偏导航与命令

全局搜索

Ctrl+K:全文检索与最近打开芯片

2.4 快速捕获

灵感稍纵即逝时不必先回到工作台:

快速捕获

捕获浮窗:标题、正文、目标文件夹,默认 Inbox

2.5 SVN 版本管理

笔记即工作副本里的文件。

模式 适用
本地文库 单机 file://,首次打开可建仓并 checkout
远程 Trunk 团队 SVN 服务器 URL

设置项包括远程 URL、会话级用户名/密码、信任服务器证书、提交前自动 update。页脚显示修订号;Ctrl+Shift+U 同步工作副本。

SVN 设置

本地 / 远程、会话口令、空 checkout 不种示例笔记

2.6 笔记历史与恢复

当前笔记可看 SVN 修订历史(右栏或独立对话框):

笔记历史

单篇笔记的 log / diff / 恢复

2.7 菜单与快捷键

操作 快捷键
快速捕获 Ctrl+Shift+N
新建笔记 Ctrl+N
保存 Ctrl+S
快速打开 / 命令 Ctrl+P
全局搜索 Ctrl+K
同步工作副本 Ctrl+Shift+U
切换主侧栏 Ctrl+B
专注写作 Ctrl+Alt+Z
转到行/列 Ctrl+G
设置 Ctrl+,
关闭当前标签 Ctrl+W

三、使用流程示例

示例 1:日常记笔记

  1. 在目标文件夹点「新建笔记」,或用捕获入库后再整理
  2. 写标题与 Markdown,预览确认
  3. Ctrl+S:写入 .md 并纳入 SVN

示例 2:会议灵感快速入库

  1. Ctrl+Shift+N 唤起捕获窗
  2. 记下要点,保存到 Inbox
  3. 会后在列表里打开,挪到对应文件夹

示例 3:远程 Trunk 协作

  1. 帮助 → SVN 与远程 Trunk,填 URL 与会话凭据
  2. 页脚同步到最新 r
  3. 编辑保存后,同事 Update 即可拉到变更
  4. 误改时用修订历史对比并恢复

四、从 Electron 到 Qt

维度 Electron 首发 Qt 重构
UI Chromium + React Qt Widgets + QSS,ProtoType/ 先行
运行时 单一 Electron 包 + Koffi 调 DLL 壳只 QLibrary 加载 Ui,Ui 不链 Core 导入库
导航 Ctrl+P / Ctrl+K 多为桩 独立对话框,测试对齐原型文案与焦点环
同步 SVN local/remote 仍是 SVN,去掉账户 / 云 / 订阅愿景
升级 常见另起 updater 壳内 Upgrade.dll 同进程 staging,无第二 exe
工作台 四栏 + 历史 Tab 四栏 + 大纲 / 历史 / 元数据

产品叙事从「现代 Web 桌面壳」收回到「笔记还是你的 .md,版本在 SVN 里」。


五、工程架构

WenJia.exe  →  WenJiaUI.dll  →  WenJiaCore.dll
 (loader)       (Host run)        (零 Qt / C ABI)
     └──────── →  Upgrade.dll(仅壳加载)

三条硬边界:

  1. 不链接任何插件导入库,只认中性 Host ABI(sdtech_qt_ui_host_run
  2. Ui 只做窗口、工作台、对话框与主题;经 CoreClient 调 Core
  3. Core 禁止 Qt(AUTOMOC/UIC/RCC 关闭);sqlite、libsvn、业务规则都在这里

Ui ↔ Core 是 C 函数表:create / destroy / kv_* / invoke。业务用 dotted JSON 方法,例如 library.treenotes.listnote.get / note.savecapture.savesearch.querynote.restoresvn.status / update / log / diff / config.*notes.recent

落盘大致是:

位置 内容
dataDir/library/ 工作副本,一篇笔记一个 .md
wenjia.db Core 内 KV(界面偏好等)
recent-notes.json 最近打开(MRU)

升级没有 updater.exeUpgrade.dll 下到 update/staging/,下次启动、尚未加载插件时由壳做文件拷贝(包内禁止带 exe)。


六、技术栈与构建

说明
语言 C++20
UI Qt 6.5+(预设 C:/Qt/6.11.1/msvc2022_64
构建 CMake 3.21+,MSVC 2022 x64
Core libsvn、OpenSSL、sdtech sqlite3 / json
测试 GTest(Core)+ Qt Test(页面 offscreen)
cd Function
cmake --preset msvc2022
cmake --build build --config Release --target WenJiaApp
.\build\bin\WenJia.exe

CMAKE_PREFIX_PATH 默认指向上述 Qt 套件。离线安装可用 D:\toolchains 里的 Qt 归档。


七、下载

版本 说明 下载链接
绿色版 解压即用 待补充
安装版 一键安装 待补充
源码包 Qt 工程源码 待补充

解压密码:1150。此处不放 Electron 旧包。


八、系统要求


九、结语

文匣适合个人知识库、产品/研发笔记,以及已经在用 SVN 的团队文档协作。Qt 版把原型主路径做成可测的原生界面,并把业务关在零 Qt 的 Core 里。若有功能建议,欢迎反馈。

Electron 首发说明仍见 《功能介绍(Electron)》