前言

最近开始学习 Qt,然后就挖坑了一个小玩具 Notepanda,顺便看看能不能替代诸如 notepad、gedit 之类的软件。顺便锻炼一下自己。

GitHub repo

Feature

  1. 基本的文本编辑操作(没想到吧这也是 feature 了哈哈哈哈哈哈)
  2. 行号显示
  3. 语法高亮
  4. 从命令行启动。(如 notepanda 或者 notepanda CMakeLists.txt

除此之外还实现了自定义字体、字号、Qt 主题和 Status Bar 等一些小功能。

以后的目标是实现多标签页,并对 Markdown 做一点优化(比如预览),如果有可能还会加进去一个 terminal。计划在 GitHub Projects

目前还是很弱的一个东西,不过等查找、替换等 feature 实现之后,基本上可以替代 Windows 的 notepad 了。

Screenshots

实现

这部分大概讲讲思路吧。

布局

layout

编辑控件

使用了 Qt 提供的 QPlainTextEdit 类,适合纯文本编辑。刚开始还用的是 QTextEdit,想想自己真是傻了,又不是要编辑富文本哈哈哈。

不过 QPlainTextEdit 似乎有点点慢,我也没能力造轮子,于是就将就着用吧。

语法高亮

刚开始想实现的时候看见了 Qt 官方的 Syntax Highlighter Example,很棒对吧。但是我可不想花精力去写一堆语言的规则呢!

然后就找到了 KDE Framework 里的 KSyntaxHighlighting。KDE Framework 是真的烦人,刚开始怎么也 build 不出来。等到了 GitHub Actions 上,整整用了四天时间才搞定,还是在某 Packman 的帮助下才完成的。。。当时看到绿绿的 Actions,我差点没开心得疯掉。。

这个 KSyntaxHighlighting,deepin-editor 和 Qt Creator 都在使用。好在他自己也提供了一些 example,看上去很简单。依赖也很小,只有 Extra CMake Modules,不过看上去和高亮的功能没啥关系,也许是 KF 必备依赖吧。它自带了两百多种语言的高亮规则,省了我很多事情,有 Dark / Light 主题,不服还可以自己写。很满意。

CI

我可不想每次更新都自己打一次包,没那个闲心,手上能用的系统也不够 :) 穷孩子怎么买得起 Mac。所以只能用 CI 啦。

现在 CI 主要帮我解决了:

  1. Windows 安装程序
  2. Windows 上的 7z & MacOS 上的 dmg & Linux 的 AppImage
  3. Release 时自动上传以上所有文件

CI 平台当然是选择了 GitHub Actions 啦!现在这个项目所有环节都在 GitHub 上能找到,AUR 除外 :(

Notepanda 的 CI 全都是抄 Qv2ray 上的,可真是帮了我很多忙。

最后

感谢 Qv2ray 的 Super Packman: ymshenyu,感谢死鬼 gcc,感谢鸭鸭,感谢 Qv2ray User Group 里面的每一个人。如果没有他们,我的 Qt 旅程不会这么顺利。

顺便,Qv2ray 是一个很好用的 v2ray 跨平台客户端,欢迎尝试!

谢谢阅读 🙇‍♂️

最后,放上我画的一只小熊猫: