[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 ...
随机推荐
- JavaCV 采集摄像头和麦克风数据推送到流媒体服务器
越来越觉得放弃JavaCV FFmpeg native API,直接使用JavaCV二次封装的API开发是很明智的选择,使用JavaCV二次封装的API开发避免了各种内存操作不当引起的crash. 上 ...
- RabbitMQ 入门 (Go) - 7. 数据持久化(下)【完】
数据库 我使用的是 PostgreSQL. 使用的驱动是 github.com/lib/pq 这个网址 https://pkg.go.dev/github.com/lib/pq 是官方文档. 创建数据 ...
- 【软件推荐】使用Cmder替换Windows自带的控制台
安装地址 进入cmder官网,下载相应版本. 如果本地已经安装了git,可以选择mini版本. 将 λ 替换为 $ 当前cmder默认的提示符是λ,看上去总是有点不习惯. 打开cmder目录下的ven ...
- (二)Struts2配置文件
一.web.xml文件 web.xml配置文件是一种J2EE配置文件,决定servlet容器的HTTP元素需求如何进行处理.它严格来说不是一个Struts2 配置文件,但它是Struts2 运作所需要 ...
- JavaWeb 补充(Filter&Listener)
目录 Filter:过滤器 Listener:监听器 Filter:过滤器 1. 概念: * 生活中的过滤器:净水器,空气净化器,土匪. * web中的过滤器:当访问服务器的资源时,过 ...
- 一般实现分布式锁都有哪些方式?使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?
#(1)redis分布式锁 官方叫做RedLock算法,是redis官方支持的分布式锁算法. 这个分布式锁有3个重要的考量点,互斥(只能有一个客户端获取锁),不能死锁,容错(大部分redis节点创建了 ...
- WPF-3D圆柱体透视
3D圆柱体透视效果 总效果 原理: 3D面+面在摄像机方向上的2D投影点的集合 3D面效果: 2D线: 画线时需要注意两个点: 1 在圆柱体上下两个圆之间有两条竖着的棱边代表圆柱体边缘 2 被遮盖的圆 ...
- shell脚本 5 sed和awk
文本处理三剑客 在 Shell 下使用这些正则表达式处理文本最多的命令有下面几个工具: 命令 描述 grep 默认不支持扩展表达式,加-E 选项开启 ERE.如果不加-E 使用花括号要加转义符\{\} ...
- java POI(二)
name.xslx 1 public class Demo6 { 2 3 public static void main(String[] args) throws IOException { 4 I ...
- Java并发的背景
在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行. 并发与操作系统的生命历程息息相关.进程的 ...