挖井

类库大魔王的挖井日记

挖一口属于自己的井


UMLGen开发踩坑

最近这段时间都在写一个叫UMLGen的GUI程序,从名字可以看出,就是一个用来画UML图的工具,与大多数现有的WYSIWYG(所见即所得)的UML画图工具(比如Visio,StarUML等等)不同的是,UMLGen使用代码的形式来描述UML图的呈现,与LaTeX的思想类似,即WYTIWYG(What You Think Is What You Get,所想即所得),我个人认为这种方式特别适合程序员使用。现在可用性已经很好了,主窗口截图如下:

UMLGen main window

程序是用Qt写的,开发过程中还是遇到一些坑,记录一下。

  • QtSvg模块实现的SVG标准有限,不能支持某些SVG,比如下面两张图,使用Firefox或Chrome浏览器查看,一切正常,用QtSvg则惨不忍睹。

math

math error

latex

latex error

除了换个支持完整的SVG库,就只能在这些时候不用SVG,改用PNG了。用PNG格式的问题是后端导出的PNG格式都是带白色背景的,而SVG是无背景透明的,这是我情愿尽量使用SVG格式的原因。

  • 用Scintilla编辑代码,自己写了一个简单的lexer,因为支持了多个后端,于是就有多种语法,所以在一个lexer里要同时支持多种语法,就会有坑,现在暂时也没想实现得多完美,这个留待以后版本改进。

  • Scintilla的Qt port对XPM图片格式支持有问题。XPM文件用文本编辑器打开可以看到是一个const char *[]的变量声明及初始化,但Scintilla的Qt port在register image时接收的参数被改成const char *,于是就对不齐了。

本文地址:

https://minidump.info/blog/2018/03/umlgen-develop-memoir/

上一篇

Qt unzip

最近又要在一个Qt程序中解压缩一些zip文件,以前用过QuaZIP,总觉得如果能不引入一个额外的第三方库会更舒服一些,于是上网搜了一下,还真有办法!先在.pro文件中添加module:QT += gui-private然后在.cpp文件中添加头文件引用:#include <private...…

Shareware 全文阅读
下一篇

在家里无缝访问公司网络

有时候在家里时想访问公司网络,干点活(真是个好员工),主要就是开开内网的网页,连连内网的IM(Cisco Jabber)。本来这个事情只要有一个VPN就可以搞定了,但是!但是我没有权限申请VPN,于是只好另辟蹊径了。首先,找到一个用于搭建内网隧道的反向代理工具frp,通过它在家里开一个服务端,...…

network 全文阅读