libreCAD源码阅读笔记1
一 前言:
正如官网(https://www.librecad.org)所说,libreCAD是一个开源的CAD制图软件,可以运行在Windows、Apple、Linux平台之上。事实上libreCAD是QCAD的一个简易版本实现,只不过libreCAD采用全C++实现,而QCAD采用了C++结合EcmaScript语言实现(参考https://blog.youkuaiyun.com/mrbaolong/category_10265952.html?spm=1001.2014.3001.5482)。
二 libreCAD源码学习
1.src/Main/Main.cpp
分析main函数,大体上也就完成了以下工作。在初始化LC_Application之后,程序还读取了相关配置信息(QSettings),如果是第一次加载程序,在QG_DlgInitial界面设置相关内容,然后调用程序启动画面(QSplashScreen),同时加载其他组件等内容。待准备工作完成后,启动程序主窗口。
2.src/Main/LC_Application
LC_Application继承QApplication,并且维护着一个打开文件的文件列表。
3.src/Main/QC_ApplicationWindow
- 主窗口
QC_ApplicaitonWindow作为程序主窗口,继承自MainWindowX类,该类主要实现了几个控制浮动窗口关闭与否的函数,也提供根据浮动窗口标题记性排序功能。大部分程序功能在QC_ApplicationWindow中实现。程序主窗口由QMdiArea/QMdiSubWindow构建多文档类型主窗口。主窗口中维护着各种浮动窗口(图层控制、鼠标面板、画笔面板。。。)、菜单栏、工具栏、状态栏等窗口部件。
- Action
LC_ActionFactory 类相当于一个工具类,生成程序Action。主窗口a_map变量保存维护一个 【名称-Action】对应关系,每个Action触发后,