[Qt] Librecad 源码分析
libraries
- jwwlib
- libdxfrw:一个免费的C++库,用于读写文本格式或二进制格式的DXF文件(C++ library to read and write DXF/DWG files)
- muparser:一个跨平台的公式解析库,它可以自定义多参数函数,自定义常量、变量及一元前缀、后缀操作符,二元操作符等,它将公式编译成字节码,所以计算起来非常快
librecad
- src:源文件
- action:动作类
- cmd:命令行
- lib:各种库
- actions:处理各种响应事件
- creation
- debug
- engine
- fileio
- filter
- generators
- gui:界面显示
- information
- math
- modification
- printing
- scripting
- main:启动程序和窗口
- plugins:插件
- test
- ui:界面控制





qc_applicationwindow
1 /**
2 * Redraws all mdi windows.
3 */
4 void QC_ApplicationWindow::redrawAll()
5 {
6 if (mdiAreaCAD)
7 {
8 foreach (const QC_MDIWindow* win, window_list)
9 {
10 if (win)
11 {
12 QG_GraphicView* gv = win->getGraphicView();
13 if (gv) {gv->redraw();}
14 }
15 }
16 }
17 }
\librecad\src\ui
qg_graphicView
updateGridStatusWidget()
1 /**
2 * Sets the text for the grid status widget in the left bottom corner.
3 */
4 void QG_GraphicView::updateGridStatusWidget(const QString& text)
5 {
6 emit gridStatusChanged(text);
7 }
wheelEvent()
1 /**
2 * mouse wheel event. zooms in/out or scrolls when
3 * shift or ctrl is pressed.
4 */
5 void QG_GraphicView::wheelEvent(QWheelEvent *e) {...}
\librecad\src\lib\gui
rs_graphicview
centerOffsetX()
1 /**
2 * Centers the drawing in x-direction.
3 */
4 void RS_GraphicView::centerOffsetX() {
5 if (container && !zoomFrozen) {
6 offsetX = (int)(((getWidth()-borderLeft-borderRight)
7 - (container->getSize().x*factor.x))/2.0
8 - (container->getMin().x*factor.x)) + borderLeft;
9 }
10 }
zoomScroll()
1 /**
2 * Scrolls in the given direction.
3 */
4 void RS_GraphicView::zoomScroll(RS2::Direction direction) {
5 switch (direction) {
6 case RS2::Up:
7 offsetY-=50;
8 break;
9 case RS2::Down:
10 offsetY+=50;
11 break;
12 case RS2::Right:
13 offsetX+=50;
14 break;
15 case RS2::Left:
16 offsetX-=50;
17 break;
18 }
19 adjustOffsetControls();
20 adjustZoomControls();
21 // updateGrid();
22
23 redraw();
24 }
\librecad\src\actions
rs_actiondrawline()
<QCursor>
The QCursor class provides a mouse cursor with an arbitrary shape
<QDockWidget>
The QDockWidget class provides a widget that can be docked inside a QMainWindow or floated as a top-level window on the desktop
参考:
https://blog.csdn.net/Caoyang_He/article/details/80343945
[Qt] Librecad 源码分析的更多相关文章
- Qt源码分析之QObject
原文:http://blog.csdn.net/oowgsoo/article/details/1529284 我感觉oowgsoo兄弟写的分析相当透彻,赞! 1.试验代码: #include < ...
- QT源码分析(从QApplication开始)
QT源码分析 转载自:http://no001.blog.51cto.com/1142339/282130 今天,在给同学讲东西的时候,谈到了Qt源代码的问题,才发现自己对Qt机制的了解是在太少了,而 ...
- qt creator源码全方面分析(0)
本人主攻C++和Qt. 上两天刚研究完Qt install framework(IFW)应用程序安装框架. google没发现有正儿八经的官方文档的翻译,我就进行了翻译哈!! 系列文章具体见:http ...
- qt creator源码全方面分析(3-3)
目录 qtcreatordata.pri 定义stripStaticBase替换函数 设置自定义编译和安装 QMAKE_EXTRA_COMPILERS Adding Compilers 示例1 示例2 ...
- qt creator源码全方面分析(3-5)
目录 qtcreatorlibrary.pri 使用实例 上半部 下半部 结果 qtcreatorlibrary.pri 上一章节,我们介绍了src.pro,这里乘此机会,把src目录下的所有项目文件 ...
- Qt update刷新之源码分析(一)
在做GUI开发时,要让控件刷新,会调用update函数:那么在调用了update函数后,Qt究竟基于什么原理.执行了什么代码使得屏幕上有变化?本文就带大家来探究探究其内部源码. Qt手册中关于QWid ...
- Qt Creator 源码学习笔记04,多插件实现原理分析
阅读本文大概需要 8 分钟 插件听上去很高大上,实际上就是一个个动态库,动态库在不同平台下后缀名不一样,比如在 Windows下以.dll结尾,Linux 下以.so结尾 开发插件其实就是开发一个动态 ...
- qt creator源码全方面分析(4-0)
Qt系统 Qt Creator源码是在Qt对象和框架基础下写的,因此,阅读Qt Creator源码,你首先对Qt得有一定的了解. Qt Core Qt Core特征: The Meta-Object ...
- qt creator源码全方面分析(4-2)
目录 global头文件 global.h xx.h global头文件 插件的本质就是动态链接库,对于库,需要导出符号,供用户导入使用.在qt creator的源码中,存在固定的导入导出模式. gl ...
随机推荐
- TypeError: 'str' object does not support item assignment Python常见错误
1.string是一种不可变的数据类型 2.尝试使用 range()创建整数列 有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式. 需要记住 range() 返回的 ...
- [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.1 引言
2.1 引言 在上一章中,介绍了降压变换器作为降低直流电压的一种方法,其仅使用非耗散开关,电感器和电容器.开关状态变换产生一个矩形波形\(v_{s}(t)\),如图2.1所示.当开关位于位置1时,该电 ...
- Mybatis-plus 上
Mybatis-plus 上 简介 1.什么是Mybatis-plus MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发 ...
- 如何快速在odoo中创建自己的菜单
上一篇内容:如何快速创建odoo模块,使用脚手架快速创建自己的odoo应用app 前言 在上一个教程中,我们已经实现了对模块的创建,现在我们要对创建的模块添加内容,这个教程将教你如何在odoo菜单中创 ...
- inline®ister
inline关键字: 内联只是一个请求,不代表编译器会响应:同时某些编译器会将一些函数优化成为内联函数. C++在类内定义的函数默认是内联函数,具体是否真变成内联函数还需看编译器本身. registe ...
- Day14_80_反射机制+IO+Propreties动态创建对象
反射机制+IO+Propreties动态创建对象 * 使用Properties文件,在文件中通过<key value>的形式保存一下类名,然后通过IO 获取该类名,再然后利用反射机制得到该 ...
- Selenium3自动化测试【15】元素定位之Class、Name
@ 目录 1.name定位 2.class定位 1.name定位 通过name定位是另外一种常用的定位元素的方式. 当一个元素存在name属性时,可以使用name定位,依旧以Bing搜索框为例(nam ...
- html书签展示(带搜索)
源代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...
- git 避免重复输入用户名密码问题解决
"store" 模式会将凭证用明文的形式存放在磁盘中,并且永不过期. 这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息. 这种方式的缺点是你的 ...
- DVWA之Brute Force
DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...