C++ 可视化编程
C++ 可视化编程
最近因为要 Debug 一个很复杂的图形操作,所以决定用 Qt 写一些接口进行可视化调试。
环境搭建
选择使用 Qt::Widgets 开发,相比 Qt:QML 更成熟,相比 Qt::Gui 集成化程度更高。
先用 Qt 创建项目,再在 VS 里编辑需要改成用 Qt 的 MingW 编译以及在 CMakeLists.txt 中设置 CMAKE_PREFIX_PATH。
1 | set(CMAKE_PREFIX_PATH $ENV{QT_DIR}) |
类规范
- 类名加 Z;
- 类成员变量 _ 开头;
- 类成员函数首字母小写;
- 类成员变量书写顺序:尽量内存对齐;
- 类成员函数书写顺序,private -> protected -> public,构造 -> 析构 -> Get -> Set -> 重载运算符 -> 其他功能,inline 的函数要尽量放前面
软件逻辑
因为第一次做软件,所以还是好好梳理一下。
一开始运行是空的,所以首先要让软件打开时默认最大化,缩小时应该默认占用 3/4 个屏幕;
保存用户设置;
一直存取不了 json 文件,找了好久才发现要用绝对路径读取文件,因为那个相对路径时根据 .exe 的位置来的。
1 | class ZMainWindow : public QMainWindow |
扩展了一下 QMainWindow,不然做不到保存是否最大化的设置。
- 很喜欢 Blender,所以界面也要尽量仿造;
除了最上面一排是固定的,剩下的都是 docker。
说实话 Qt 的 QDockWidget有点过于垃圾了,干脆不用 Dock 了,以后用 Vulkun 重写。
所有的图形应该共用一只画笔;
共用一支画笔需要在 MainWindow 里初始化静态函数,再在 GraphicsItem 里设置 Pen,最后在 paint() 里复制 pen,不知道这样性能怎么样。
在外部操作画图形;
基本上前面搞定,后面就是水到渠成了。
1 | // 获取场景 |
如果想用按钮控制,著需要引入槽即可。
画布拖拽;
一直没找到方法,懒得做了。
动态的画图形。
没想到什么好办法,应该要用多线程来做。
项目框架
项目地址
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment