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 源码分析的更多相关文章

  1. Qt源码分析之QObject

    原文:http://blog.csdn.net/oowgsoo/article/details/1529284 我感觉oowgsoo兄弟写的分析相当透彻,赞! 1.试验代码: #include < ...

  2. QT源码分析(从QApplication开始)

    QT源码分析 转载自:http://no001.blog.51cto.com/1142339/282130 今天,在给同学讲东西的时候,谈到了Qt源代码的问题,才发现自己对Qt机制的了解是在太少了,而 ...

  3. qt creator源码全方面分析(0)

    本人主攻C++和Qt. 上两天刚研究完Qt install framework(IFW)应用程序安装框架. google没发现有正儿八经的官方文档的翻译,我就进行了翻译哈!! 系列文章具体见:http ...

  4. qt creator源码全方面分析(3-3)

    目录 qtcreatordata.pri 定义stripStaticBase替换函数 设置自定义编译和安装 QMAKE_EXTRA_COMPILERS Adding Compilers 示例1 示例2 ...

  5. qt creator源码全方面分析(3-5)

    目录 qtcreatorlibrary.pri 使用实例 上半部 下半部 结果 qtcreatorlibrary.pri 上一章节,我们介绍了src.pro,这里乘此机会,把src目录下的所有项目文件 ...

  6. Qt update刷新之源码分析(一)

    在做GUI开发时,要让控件刷新,会调用update函数:那么在调用了update函数后,Qt究竟基于什么原理.执行了什么代码使得屏幕上有变化?本文就带大家来探究探究其内部源码. Qt手册中关于QWid ...

  7. Qt Creator 源码学习笔记04,多插件实现原理分析

    阅读本文大概需要 8 分钟 插件听上去很高大上,实际上就是一个个动态库,动态库在不同平台下后缀名不一样,比如在 Windows下以.dll结尾,Linux 下以.so结尾 开发插件其实就是开发一个动态 ...

  8. qt creator源码全方面分析(4-0)

    Qt系统 Qt Creator源码是在Qt对象和框架基础下写的,因此,阅读Qt Creator源码,你首先对Qt得有一定的了解. Qt Core Qt Core特征: The Meta-Object ...

  9. qt creator源码全方面分析(4-2)

    目录 global头文件 global.h xx.h global头文件 插件的本质就是动态链接库,对于库,需要导出符号,供用户导入使用.在qt creator的源码中,存在固定的导入导出模式. gl ...

随机推荐

  1. TypeError: 'str' object does not support item assignment Python常见错误

    1.string是一种不可变的数据类型 2.尝试使用 range()创建整数列 有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式. 需要记住 range() 返回的 ...

  2. [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.1 引言

    2.1 引言 在上一章中,介绍了降压变换器作为降低直流电压的一种方法,其仅使用非耗散开关,电感器和电容器.开关状态变换产生一个矩形波形\(v_{s}(t)\),如图2.1所示.当开关位于位置1时,该电 ...

  3. Mybatis-plus 上

    Mybatis-plus 上 简介 1.什么是Mybatis-plus MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发 ...

  4. 如何快速在odoo中创建自己的菜单

    上一篇内容:如何快速创建odoo模块,使用脚手架快速创建自己的odoo应用app 前言 在上一个教程中,我们已经实现了对模块的创建,现在我们要对创建的模块添加内容,这个教程将教你如何在odoo菜单中创 ...

  5. inline&register

    inline关键字: 内联只是一个请求,不代表编译器会响应:同时某些编译器会将一些函数优化成为内联函数. C++在类内定义的函数默认是内联函数,具体是否真变成内联函数还需看编译器本身. registe ...

  6. Day14_80_反射机制+IO+Propreties动态创建对象

    反射机制+IO+Propreties动态创建对象 * 使用Properties文件,在文件中通过<key value>的形式保存一下类名,然后通过IO 获取该类名,再然后利用反射机制得到该 ...

  7. Selenium3自动化测试【15】元素定位之Class、Name

    @ 目录 1.name定位 2.class定位 1.name定位 通过name定位是另外一种常用的定位元素的方式. 当一个元素存在name属性时,可以使用name定位,依旧以Bing搜索框为例(nam ...

  8. html书签展示(带搜索)

    源代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...

  9. git 避免重复输入用户名密码问题解决

    "store" 模式会将凭证用明文的形式存放在磁盘中,并且永不过期. 这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息. 这种方式的缺点是你的 ...

  10. DVWA之Brute Force

    DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...