libreCAD源码阅读笔记2
libreCAD源码阅读笔记2
1. 前言
继续学习QC_MDIWindow类、QG_ActionHandler类相关代码
2. QC_MDIWindow类
QC_MDIWindow类继承QT QMdiSubWindow类,与QMdiArea公共构成多文档窗口结构,在QC_MDIWindow构造函数中,使用setWidget(graphicView)(QC_MDIWindow.cpp 81行)将QG_GrahpicView设置为QC_MDIWindow窗口主界面;同时,QC_MDIWindow构造函数接受一个RS_Document参数,传递给自身document变量,并将该变量传给QG_GrahpicView,方便数据有所改变时候视图同时更新。
3. QG_ActionHandler类
QG_ActionHandler可以称为一个事件生产类,主窗口的每个事件(QAction)发射的QT信号,将调用具体的槽函数(signal/slot),然后通过setCurrentAction()函数生成一个具体事件,并返回其父类接口RS_ActionInterface,在libreCAD源码src/Actions里面的所有事件类都继承自RS_ActionInterface,实现画点线面、实物编辑等具体内容。RS_ActionInterface将传递给其关联的RS_GraphicView,以便于视图窗口接收到操作事件命令时候,触发该事件进行绘图等操作。
下面是setCurrentAction()函数的首位部分代码:
4. 结束语
RS_GraphicView 、RS_Document、RS_ActionInterface似乎在深度捆绑着,有待下一步学习深入理解。
libreCAD源码阅读笔记2相关推荐
- libreCAD源码阅读笔记1
libreCAD源码阅读笔记1 一 前言: 正如官网(https://www.librecad.org)所说,libreCAD是一个开源的CAD制图软件,可以运行在Windows.Apple.Linu ...
- libreCAD源码阅读笔记3
libreCAD源码阅读笔记3 1 前言 打开RS_Document源码后,又出现了RS_EntityContainer.RS_Entity等一系列类,这好像就是libreCAD的数据模型,有具体的实 ...
- libreCAD源码阅读笔记4
libreCAD源码阅读笔记4 前言 总的来说,程序主窗口QC_ApplicationWindow使用QMdiArea作为多文档主界面,每个文档QC_MDIWindow使用RS_Document作为数 ...
- Transformers包tokenizer.encode()方法源码阅读笔记
Transformers包tokenizer.encode()方法源码阅读笔记_天才小呵呵的博客-CSDN博客_tokenizer.encode
- 源码阅读笔记 BiLSTM+CRF做NER任务 流程图
源码阅读笔记 BiLSTM+CRF做NER任务(二) 源码地址:https://github.com/ZhixiuYe/NER-pytorch 本篇正式进入源码的阅读,按照流程顺序,一一解剖. 一.流 ...
- 代码分析:NASM源码阅读笔记
NASM源码阅读笔记 NASM(Netwide Assembler)的使用文档和代码间的注释相当齐全,这给阅读源码 提供了很大的方便.按作者的说法,这是一个模块化的,可重用的x86汇编器, 而且能够被 ...
- CI框架源码阅读笔记4 引导文件CodeIgniter.php
到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http:// ...
- Yii源码阅读笔记 - 日志组件
2015-03-09 一 By youngsterxyf 使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category); Yii: ...
- AQS源码阅读笔记(一)
AQS源码阅读笔记 先看下这个类张非常重要的一个静态内部类Node.如下: static final class Node {//表示当前节点以共享模式等待锁static final Node SHA ...
最新文章
- 9个技巧让你的PyTorch模型训练变得飞快!
- 用法 stl_PoEdu培训第四课-C++之STL
- 数据结构的定义和简介
- Python写各大聊天系统的屏蔽脏话功能原理
- 3.2-3.3 Hive中常见的数据压缩
- 重构-改善既有代码的设计:重新组织函数的九种方法(四)
- python类库32[多进程同步Lock+Semaphore+Event]
- 趣学python3(30)-字典
- c语言编程 验证用户名和密码是否正确(函数定义),《C语言程序设计教程》习题参考答案[精品资料].doc...
- 电商美工忙不停,年货节海报素材模板,拯救电商汪
- cimiss数据_CIMISS数据下载小助手
- word 2007为不同页插入不同页眉页脚
- 滴滴Java实习面经
- 普中28335开发攻略_凌乱的DSP笔记(1)-F28335基础知识
- Android开发框架大全
- 常用的机器学习算法(使用 Python 和 R 代码)
- android系统升级实现,疯狂升级的Android系统
- 华为OD机试 - 德州扑克(Java JS Python)
- c语言程序设计基础程序改错,c语言程序设计改错信息.docx
- 阿拉伯数字和汉字对照表
热门文章
- matlab geoshow 地质,Matlab 绘制三维立体图(以地质异常体为例)
- thinkphp6+websocket 群聊实现
- 会声会影2021软件下载如何制作视频剪辑制作教学
- 圣思园将于本周日(10月31日)举行Web Service开发大型免费公开课
- 人工智能神经网络算法,人工智能神经网络技术
- python读取Excel中关联表格的数据(只要是同Excel中
- Win7下硬盘响声大的解决办法
- mysql和python先学哪个_Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)
- Linux C语言 创建一个简单的守护进程
- 在CentOS上安装和配置OpenNebula入门实例