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触发后,调用QG_ActionHandler中的槽函数。具体代码参考如下:
QC_ApplicationWindow.h

本文是libreCAD源码阅读笔记的第一部分,主要探讨了Main.cpp中的main函数,LC_Application类以及QC_ApplicationWindow主窗口的实现。在main函数中,程序进行初始化并读取配置,显示启动画面。LC_Application维护着打开文件的列表,而QC_ApplicationWindow基于QMdiArea构建,包含各种浮动窗口、菜单栏和工具栏。LC_ActionFactory生成Action,QG_ActionHandler处理事件交互。后续将研究更多细节,如MDI窗口、ActionHandler及界面元素。
最低0.47元/天 解锁文章
958

被折叠的 条评论
为什么被折叠?



