GraphViz v1.2.2
GraphViz v1.2.2 发行说明
发布日期: 2026-06-20
版本: v1.2.2
仓库: https://github.com/SiriLee/GraphViz
下载: https://github.com/SiriLee/GraphViz/releases/tag/v1.2.2
v1.2.2 变更日志
拖拽跟随修复(核心修复)
v1.2.1 默认图从 11 顶点改为 4 顶点紧簇后,拖拽漂移问题变得明显。根因:拖拽时鼠标跟踪与画面渲染使用不同视图变换(缩放因子随包围盒变化而偏离)。
- 排除变换方案:拖拽时包围盒排除被拖顶点,使缩放因子恒定
- 全局对齐:按下瞬间所有顶点数据位置统一重映射,消除视图跳变
- 松手自动适配:释放后触发正常变换重绘,视图自动缩放包含被拖顶点新位置
- 边界卡死、出界冻结问题同步解决
解析器严格化
- 结构化 x-W-y 解析:6 阶段操作符解析,
<>各至多一次且位置受限 - 权重校验强化:非法浮点数权重 → 报错(不再静默回退为 1.0)
- 尾部内容检测:
my-node---B正确报错(顶点名含-须加引号) - 新增有效格式:
A->B、A<-B(最简有向边) - 引号规则扩展:无引号顶点名遇
-<>即停,强制引号包裹
文档更新
- 输入格式文档同步更新(README.md、MANUAL.html)
- 错误拒绝表扩充(新增 5 个错误示例)
- 解析器设计章节重写(6 阶段结构化描述)
测试方案
| 功能 | 操作 | 预期 |
|---|---|---|
| 拖拽跟随 | 拖拽默认图 A-D 任意顶点 | 严格跟随鼠标,松手视图适配 |
| 按下无跳变 | 点击边缘附近的顶点 | 按下瞬间画面不变 |
| 边界拖拽 | 拖至窗口外 | 不卡死,松手后自动恢复 |
| 新语法 | 输入 A->B, A<-B |
正常解析为有向边 |
| 非法权重 | 输入 A-"abc"->B |
行号报错 |
| 尾部检查 | 输入 my-node---B |
报错提示引号 |
| 便携版 | 解压即用 | 功能完整,MANUAL.html 可打开 |
修改文件
CMakeLists.txt # 版本 1.2.2
include/GraphParser.h # 文档注释更新为严格边语法
src/GraphParser.cpp # 6 阶段 x-W-y 解析 + 尾部校验 + needsQuoting 扩展
src/gui/GraphWidget.cpp # 排除变换重载 + 全局对齐 + paintEvent 冻结变换
README.md # 输入格式/解析器/错误拒绝表更新
docs/MANUAL.html # 输入格式/错误拒绝表更新
.gitignore # 新增 dist/
CLAUDE.md # 发布流程精简至 CLAUDE.local.md
系统要求
- Windows 10/11 (64-bit)
- 无需安装 Qt — Portable 版解压即用
技术栈
C++17 · Qt 6 (Widgets + Network) · CMake · MinGW-w64 · GitHub Releases API