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,方便数据有所改变时候视图同时更新。
QC_MDIWindow
代码描述

3. QG_ActionHandler类

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似乎在深度捆绑着,有待下一步学习深入理解。

© 版权声明
THE END
喜欢就支持一下吧
点赞336 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容