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似乎在深度捆绑着,有待下一步学习深入理解。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容