[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 ...
随机推荐
- 学习一下 SpringCloud (六)-- 注册中心与配置中心 Nacos、网关 Gateway
(1) 相关博文地址: 学习一下 SpringCloud (一)-- 从单体架构到微服务架构.代码拆分(maven 聚合): https://www.cnblogs.com/l-y-h/p/14105 ...
- 图文详解Java对象内存布局
作为一名Java程序员,我们在日常工作中使用这款面向对象的编程语言时,做的最频繁的操作大概就是去创建一个个的对象了.对象的创建方式虽然有很多,可以通过new.反射.clone.反序列化等不同方式来创建 ...
- CodeForces571A. Lengthening Sticks(组合数学-容斥)
题目大意: a,b,c三根木棍可以增加三个不同的数字,aa,bb,cc,且aa+bb+cc<=L,问能构成三角形的木棒有多少种方案 题目思路: 如果我们直接考虑把L分配给aa,bb,cc好像不好 ...
- Spring Cloud微服务限流之Sentinel+Apollo生产实践
Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素.在并发流量比较高的情况下,由于网络调用之间存 ...
- (数据科学学习手札117)Python+Dash快速web应用开发——交互表格篇(下)
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- 前端缓存API请求数据
1. 背景 在一些项目中,有时候会出现不同模块重复请求大量相同api接口的情况,特别是在一些功能相似的后台管理页面中.以下面这几个页面为例,每次进入页面都需要请求等大量重复的下拉框数据,下拉框数据短时 ...
- 一次错误使用 go-cache 导致出现的线上问题
话说一个美滋滋的上午, 突然就出现大量报警, 接口大量请求都响应超时了. 排查过程 查看服务器的监控系统, CPU, 内存, 负载等指标正常 排查日志, 日志能够响应的结果也正常. request.l ...
- spring boot最新版使用几个坑解决
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent ...
- chrom里面的performance 颜色
在network里面,在network里面,在network里面(重要事件说三遍) : 1. HTML 文件为蓝色. 2. 脚本为黄色. 3. 样式表为紫色. 4. 媒体文件为绿色. 5. 其他资源为 ...
- vue.js中$emit的理解
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...