Files
VoiletMark/README.md
T
liyepan a1016ac7d7 feat: VoiletMark 0.1.0 —— Qt5/C++ Markdown 编辑器
- 自动跟随系统的浅色/深色主题(Windows 注册表、macOS defaults、
  Linux gsettings / KDE / XFCE),每 2 秒检测,可在菜单中手动锁定
- Markdown 语法高亮(标题、强调、行内代码、围栏代码块、链接、
  引用、列表、任务列表、分隔线)
- 编辑器:行号栏、当前行高亮、Tab 缩进、拖放打开、Ctrl+滚轮缩放
- 文件:新建/打开/保存/另存为/最近打开,保留 BOM 与 CRLF,QSaveFile 原子写入
- 状态栏、未保存提示、窗口与编辑设置持久化
- CMake 构建脚本与 README
2026-10-22 17:06:27 +08:00

3.3 KiB
Raw Blame History

VoiletMark

一个轻量的跨平台 Markdown 编辑器,基于 Qt 5 / C++17 构建。

当前版本 0.1.0:先把编辑器本体做扎实——干净的界面、顺手的编辑手感、 以及自动跟随系统的浅色 / 深色主题。

界面

浅色 深色
浅色主题 深色主题

功能

编辑

  • Markdown 语法高亮:标题、粗体 / 斜体 / 删除线、行内代码、围栏代码块、 链接与图片、引用、有序 / 无序列表、任务列表、分隔线
  • 行号栏、当前行高亮
  • Tab / Shift+Tab 整行缩进,选中多行时批量缩进
  • 自动换行(Alt+Z)、Ctrl+滚轮 或 Ctrl++ / Ctrl+- 缩放字号
  • 撤销 / 重做、剪切 / 复制 / 粘贴,菜单项会跟随可用状态自动灰显
  • 把 Markdown 文件直接拖进窗口即可打开

文件

  • 新建、打开、保存、另存为、最近打开(最多 8 条)
  • 保留原文件的 BOM 与 CRLF 换行风格,保存时原子写入(QSaveFile)
  • 关闭或切换文件时提示未保存的修改
  • 记忆窗口位置、字号、换行开关等设置

主题

界面默认跟随系统自动在浅色 / 深色之间切换,每 2 秒检测一次:

平台 检测方式
Windows 注册表 AppsUseLightTheme
macOS defaults read -g AppleInterfaceStyle
Linux gsettings color-scheme / GTK 主题名 → KDE kdeglobals → XFCE xsettings.xml → 调色板兜底

也可以在 视图 → 主题 中手动锁定「跟随系统 / 浅色 / 深色」,选择会被记住。

构建

依赖:Qt 5.12+(含 Widgets)、CMake 3.16+、支持 C++17 的编译器。

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \\
      -DCMAKE_PREFIX_PATH="$HOME/Qt5/5.15.2/gcc_64"
cmake --build build -j"$(nproc)"
./build/VoiletMark

或者直接:

./scripts/build.sh

脚本会自动探测 $HOME/Qt5/5.15.2/gcc_64,也可以用 QT_PREFIX 环境变量指定。

命令行

VoiletMark                     # 打开编辑器(显示欢迎文档)
VoiletMark notes.md            # 直接打开指定文件
VoiletMark --theme dark        # 本次运行使用深色主题
VoiletMark --screenshot a.png  # 渲染窗口截图后退出(调试 / 视觉回归)

快捷键

快捷键 功能
Ctrl+N / Ctrl+O / Ctrl+S 新建 / 打开 / 保存
Ctrl+Shift+S 另存为
Ctrl+Z / Ctrl+Shift+Z 撤销 / 重做
Ctrl+滚轮、Ctrl++、Ctrl+-、Ctrl+0 缩放 / 恢复字号
Alt+Z 切换自动换行
Tab / Shift+Tab 缩进 / 反缩进
Ctrl+Q 退出

代码结构

src/
├── main.cpp               入口:命令行解析、Fusion 样式、主题初始化
├── ThemeManager.{h,cpp}   系统主题检测 + 调色板 / QSS 生成
├── MainWindow.{h,cpp}     菜单、文件读写、最近打开、状态栏、设置
├── MarkdownEditor.{h,cpp} 编辑器控件:行号、缩进、拖放、缩放
└── MarkdownHighlighter.{h,cpp}  Markdown 语法着色(含围栏代码块状态机)

下一版计划

  • 实时预览(右侧或同屏渲染)
  • 查找 / 替换
  • 列表按回车自动续行
  • 表格与数学公式支持
  • 导出 HTML / PDF