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相关推荐

  1. libreCAD源码阅读笔记1

    libreCAD源码阅读笔记1 一 前言: 正如官网(https://www.librecad.org)所说,libreCAD是一个开源的CAD制图软件,可以运行在Windows.Apple.Linu ...

  2. libreCAD源码阅读笔记3

    libreCAD源码阅读笔记3 1 前言 打开RS_Document源码后,又出现了RS_EntityContainer.RS_Entity等一系列类,这好像就是libreCAD的数据模型,有具体的实 ...

  3. libreCAD源码阅读笔记4

    libreCAD源码阅读笔记4 前言 总的来说,程序主窗口QC_ApplicationWindow使用QMdiArea作为多文档主界面,每个文档QC_MDIWindow使用RS_Document作为数 ...

  4. Transformers包tokenizer.encode()方法源码阅读笔记

    Transformers包tokenizer.encode()方法源码阅读笔记_天才小呵呵的博客-CSDN博客_tokenizer.encode

  5. 源码阅读笔记 BiLSTM+CRF做NER任务 流程图

    源码阅读笔记 BiLSTM+CRF做NER任务(二) 源码地址:https://github.com/ZhixiuYe/NER-pytorch 本篇正式进入源码的阅读,按照流程顺序,一一解剖. 一.流 ...

  6. 代码分析:NASM源码阅读笔记

    NASM源码阅读笔记 NASM(Netwide Assembler)的使用文档和代码间的注释相当齐全,这给阅读源码 提供了很大的方便.按作者的说法,这是一个模块化的,可重用的x86汇编器, 而且能够被 ...

  7. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http:// ...

  8. Yii源码阅读笔记 - 日志组件

    2015-03-09 一 By youngsterxyf 使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category); Yii: ...

  9. AQS源码阅读笔记(一)

    AQS源码阅读笔记 先看下这个类张非常重要的一个静态内部类Node.如下: static final class Node {//表示当前节点以共享模式等待锁static final Node SHA ...

最新文章

  1. 9个技巧让你的PyTorch模型训练变得飞快!
  2. 用法 stl_PoEdu培训第四课-C++之STL
  3. 数据结构的定义和简介
  4. Python写各大聊天系统的屏蔽脏话功能原理
  5. 3.2-3.3 Hive中常见的数据压缩
  6. 重构-改善既有代码的设计:重新组织函数的九种方法(四)
  7. python类库32[多进程同步Lock+Semaphore+Event]
  8. 趣学python3(30)-字典
  9. c语言编程 验证用户名和密码是否正确(函数定义),《C语言程序设计教程》习题参考答案[精品资料].doc...
  10. 电商美工忙不停,年货节海报素材模板,拯救电商汪
  11. cimiss数据_CIMISS数据下载小助手
  12. word 2007为不同页插入不同页眉页脚
  13. 滴滴Java实习面经
  14. 普中28335开发攻略_凌乱的DSP笔记(1)-F28335基础知识
  15. Android开发框架大全
  16. 常用的机器学习算法(使用 Python 和 R 代码)
  17. android系统升级实现,疯狂升级的Android系统
  18. 华为OD机试 - 德州扑克(Java JS Python)
  19. c语言程序设计基础程序改错,c语言程序设计改错信息.docx
  20. 阿拉伯数字和汉字对照表

热门文章

  1. matlab geoshow 地质,Matlab 绘制三维立体图(以地质异常体为例)
  2. thinkphp6+websocket 群聊实现
  3. 会声会影2021软件下载如何制作视频剪辑制作教学
  4. 圣思园将于本周日(10月31日)举行Web Service开发大型免费公开课
  5. 人工智能神经网络算法,人工智能神经网络技术
  6. python读取Excel中关联表格的数据(只要是同Excel中
  7. Win7下硬盘响声大的解决办法
  8. mysql和python先学哪个_Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)
  9. Linux C语言 创建一个简单的守护进程
  10. 在CentOS上安装和配置OpenNebula入门实例