引出
CAD相关知识——常见的三维模型格式及其特点
常见的三维模型格式及其特点
三维模型结构格式有很多种,每种格式都有其特定的用途和特点。以下是一些常见的三维模型格式及其特点:
STL (Stereolithography)
- 特点:STL 是最常用的三维打印文件格式,它通过三角面片来近似表示三维模型。STL 文件不包含颜色、纹理或其他属性信息,只包含几何数据。
- 应用:主要用于快速原型制作和三维打印。
OBJ
- 特点:OBJ 是一种开放的几何定义文件格式,由 Wavefront Technologies 开发。它可以存储顶点、面、法线、纹理坐标等信息,并且支持多边形面片。OBJ 文件通常与材质文件(如 MTL)一起使用,以提供更丰富的模型信息。
- 应用:广泛用于三维建模软件之间的数据交换,以及游戏和动画行业。
FBX (Filmbox)
- 特点:FBX 是一种专有格式,由 Autodesk 开发,用于在不同的三维建模和动画软件之间交换数据。FBX 支持几何数据、动画、材质、灯光、相机等多种信息。
- 应用:广泛用于游戏开发、电影制作和虚拟现实等领域。
COLLADA (COLLAborative Design Activity)
- 特点:COLLADA 是一种开放的 XML 格式,用于在不同的三维软件应用程序之间交换数据。它支持几何数据、动画、材质、灯光等多种信息,并且可以包含复杂的层次结构和场景信息。
- 应用:主要用于三维建模软件之间的数据交换,以及虚拟现实和增强现实应用。
PLY (Polygon File Format)
- 特点:PLY 是一种用于存储三维数据的文件格式,支持多边形和点云数据。它可以存储顶点、面、颜色、法线等信息。
- 应用:常用于三维扫描数据的存储和处理。
3DS (3D Studio)
- 特点:3DS 是一种较老的文件格式,由 Autodesk 的 3D Studio Max 使用。它支持几何数据、材质、贴图、动画等信息。
- 应用:主要用于三维建模和动画软件之间的数据交换。
glTF (GL Transmission Format)
- 特点:glTF 是一种相对较新的格式,由 Khronos Group 开发,旨在成为一种高效的传输和加载三维场景的格式。它使用 JSON 和二进制数据来存储几何数据、动画、材质等信息。
- 应用:主要用于 Web 上的三维内容传输和展示,如 WebGL 应用。
VRML (Virtual Reality Modeling Language)
- 特点:VRML 是一种用于在 Web 上创建三维交互式内容的文件格式。它支持几何数据、材质、动画、交互性等信息。
- 应用:主要用于早期的虚拟现实和三维 Web 内容。
X3D
- 特点:X3D 是 VRML 的继承者,是一种基于 XML 的文件格式,用于在 Web 上创建三维交互式内容。它支持几何数据、材质、动画、交互性等信息。
- 应用:主要用于现代的虚拟现实和三维 Web 内容。
总结
每种三维模型格式都有其特定的用途和优势。选择合适的格式取决于具体的应用场景和需求。例如,STL 适合三维打印,OBJ 和 FBX 适合三维建模和动画软件之间的数据交换,glTF 适合 Web 上的三维内容传输。
总结
CAD相关知识——常见的三维模型格式及其特点
CAD/CAE/CAM
计算机辅助设计 Computer-aided design (CAD)
1.定义:
①计算机辅助设计是利用计算机(或工作站)帮助创建、修改、分析或优化设计。该软件用于提高设计人员的生产力,改善设计质量,通过文档改善沟通,并为制造业创建一个数据库。通过CAD软件进行的设计在专利申请中有助于保护产品和发明。CAD输出通常以电子文件的形式进行打印、加工或其他制造操作。计算机辅助绘图(CAD)和计算机辅助设计绘图(CADD)也被使用。
②它在电子系统设计中的应用被称为电子设计自动化(ED)。在机械设计中,它被称为机械设计自动化(MDA),其中包括利用计算机软件创建技术图纸的过程。
③机械设计CAD软件既可以使用基于矢量的图形来描述传统绘图的对像,也可以生成显示设计对象整体外观的光栅图形。然而,它涉及的不仅仅是形状。与手工绘制技术和工程图纸一样,CAD的输出必须根据特定应用的惯例传递信息,如材料、工艺、尺寸和公差。
④CAD可以用来设计二维(2D)空间中的曲线和图形,或者用来设计三维(3D)空间中的曲线、曲面和实体。
⑤计算机辅助设计是一门重要的工业艺术,广泛应用于许多领域,包括汽车、造船和航空航天工业工业和建筑设计建筑信息模型凹)、假肢等等。计算机辅助设计也被广泛用于制作电影、广告和技术手册中的特殊效果的计算机动画,通常被称为DCC数字内容创作。现代计算机的普及和强大意味着,即使是香水瓶和洗发水分配器的设计使用技术闻所未闻的20世纪60年代的工程师。由于其巨大的经济重要性,CAD一直是计算几何、计算机图形学(包括硬件和软件)和离散微分几何研究的主要推动力。
⑥特别是对物体形状的几何模型的设计,有时被称为计算机辅助几何设计(CAGD)
2.概述
①计算机辅助设计是工程师和设计师使用的众多工具之一,其使用方式取决于用户的职业和所涉及的软件类型。
②CAD是产品生命周期管理(PLM)过程中整个数字产品开发(DPD)活动的一部分,因此与其他工具(集成模块或独立产品)一起使用,例如:
①计算机辅助工程(Computer-Aided Engineering,CAE)及有限元分析
②计算机辅助制造(CAM),包括对电脑数控机床(CNC)机器的指令
③真实感绘制与运动仿真
④使用产品数据管理(PDM)进行文档管理和修订控制
3.类别
一个简单的过程,重建一个实体模型的二维草图
有几种不同类型的CAD,[9]每一种都要求操作者以不同的方式思考如何使用它们,并以不同的方式设计它们的
虚拟组件。
①2DCAD
有许多低端2D系统的制造商,包括一些免费和开源的程序。这些提供了一种绘图过程的方法,没有所有的小题大做的比例和放置在绘图表上的手工起草,因为这些可以根据需要调整在创建最终草案。
②3DCAD
3d线框图基本上是2d绘图现在不常用)的延伸,成为一个三维空间。每一行都必须手动插入到绘图中。最终产品没有与之相关的质量属性,也不能直接添加特性,比如孔。尽管许多3D系统允许使用线框模型来制作最终的工程图视图,但是操作者以类似于2D系统的方式来处理这些问题。
3D"dub”实体的创建方式类似于对现实世界对象的操作(今天并不常用)。基本的三维几何形状(棱柱体、圆柱体、球体、矩形)有实体体积的增减,就好像是在组装或切割真实世界的物体。可以很容易地从模型中生成二维投影视图。基本的3D立体通常不包括工具来容易地允许组件的运动,设置它们的运动限制,
4.科技
①最初,CAD系统的软件是用计算机语言开发的,如Fortran、ALGOL,但随着面向对象程序设计方法的进步,这种情况发生了根本性的变化。典型的基于特征的现代参数化建模和自由曲面系统是围绕一些关键的C模块构建的,这些模块具有自己的API。一个CAD系统可以被看作是通过一个图形用户界面(GUI)与NURBS几何或边界表示(B-rep)数据通过一个几何模型内核的交互建立起来的。还可以使用几何约束引擎来管理几何之间的关联关系,例如草图中的线框几何或组装中的组件。
②这些联想关系的意想不到的能力已经导致了一种叫做数位化原型的原型的新形式。相比之下,物理原型,这需要在设计制造时间。也就是说,CAD模型可以由计算机生成后,物理原型已经扫描使用工业CT扫描机。根据业务的性质,可以根据具体需求初步选择数字或实体原型。
③今天,CAD系统适用于所有主要平台(Windows、.Linux、UNIX和MacOSX);一些软件包支持多种平台。
④目前,大多数CAD软件不需要特殊的硬件。然而,一些CAD系统可以完成图形化和计算密集型的任务,因此推荐使用现代图形卡、高速(何能是多个)CPU和大量RAM。
⑤人机界面通常是通过电脑鼠标,但也可以通过笔和数字化图形平板电脑。对屏幕上模型视图的操作有时也可以通过使用SpaceMouse/SpaceBall来完成。一些系统还支持立体眼镜来观看3D模型。过去仅限于大型安装或专业应用的技术现在已经可供广大用户使用。这些包括CAVE或HMD和交互式设备,如运动传感技术
5.软件:
1.自上世纪60年代中期开始,随着IBM绘图系统的出现,公司转向CAD的成本效益变得明显起来。CAD系统相对于手工绘图的优势在于,人们通常认为今天的计算机系统具有理所当然的能力:自动生成材料清单、集成电路中的自动布局、干扰检测等等。最终,CAD为设计者提供了进行工程计算的能力。在这一转变过程中,计算仍然是手工进行的,或者由那些能够运行计算机程序的个人进行。CAD是工程行业的一个革命性变革在这里绘图员、设计师和工程师的角色开始融合。它没有减少部门,而是合并了部门,并赋予了起草人员、设计人员和工程师权力。计算机辅助设计是计算机开始对工业产生普遍影响的一个例子。
目前的计算机辅助设计软件包包括从二维矢量绘图系统到三维立体和表面建模软件。现代CAD软件包也经常允许三维旋转,允许从任何想要的角度观看设计对象,甚至从内部向外看。某些CAD软件具有动态数学建模的能力。
2.CAD技术应用于工具和机械的设计,以及从小型住宅(房屋)到最大的商业和工业结构(医院和工厂)的各类建筑的制图和设计。
3.计算机辅助设计主要用于物理部件的三维模型或二维绘图的详细工程,但也用于整个工程过程,包括产品的风格设计和布局、组件的强度和动态分析,以及部件制造方法的定义。它也可以用来设计物体,如珠宝,家具,电器等。此外,许多CAD应用程序现在提供先进的渲染和动画功能,使工程师可以更好地可视化他们的产品设计。4DBM是一种结合时间或进度相关信息进行项目管理的虚拟建筑工程仿真。
4.计算机辅助设计已成为电脑辅助科技范畴内一项特别重要的技术,其优点包括降低产品开发成本和大大缩短设计周期。CAD使设计师可以布局和开发屏幕上的工作,打印出来,并保存为未来的编辑,节省时间在他们的图纸。
6.许可证管理软件
1.在2000年初,一些CAD系统软件供应商可能已经为他们的发行版提供了一个专用的许可证管理软件这个软件可以控制使用CAD系统的频率和用户数量。它既可以在本地机器上运行(通过从本地存储设备加载),也可以在本地网络文件服务器上运行,在后一种情况下,它通常绑定到特定的P地址。
计算机辅助工程 Computer-Aided Engineer (CAE)
1.定义:
①计算机辅助工程(Computer-Aided Engineering,CAE)可以定义为在工程分析相关任务中使用技术的一般情况。任何解决或协助工程问题的技术应用都属于这一范畴。
2.概述
①随着计算机图形学和速度的不断提高,电脑辅助设备通过输入信息和按下按钮,帮助工程师完成一度复杂和耗时的任务。
②它包括有限元分析(FEA)、计算流体力学(CFD)、多体动力学(MBD)、耐久性和优化。它与计算机辅助设计(CAD)和计算机辅助制造(CAM)一起被收录在集合缩写”CAx”中。
③CAE这个术语已经被用来描述计算机技术在工程中的广义应用,而不仅仅是工程分析。正是在这种背景下,上世纪70年代末SDRC的创始人杰森:莱蒙(Jason Lemon)创造了这个词。然而,这个定义如今更为人所知的术语是CAx和PLM
④CAE系统被单独看作是整个信息网络中的一个节点,每个节点都可以与网络中的其他节点进行交互。
3.CAE领域:
CAE涵盖的领域包括:
①使用有限元分析进行元件及组件的应力分析(FEA):
②热力及流体流动分析计算流体力学:
③多体动力学和运动学:
④分析工具的过程模拟操作,如铸造,成型,和模压成形
⑤产品或工艺的优化。
4.一般来说,任何计算机辅助工程(Computer-Aided Engineering,CAE)任务都有三个阶段:
①预处理-定义模型和环境因素适用于它(通常是一个有限元模型,但面,体素,薄片方法也使用);
②分析求解器(通常在高性能计算机上执行):
③后处理结果(使用可视化工具)。
5.这个循环被迭代,通常是很多次,或者是手动的,或者是使用商业优化软件。
4.应用与前景
1.汽车工业中的CAE
①CAE工具在汽车工业中得到了广泛的应用。它们的使用使汽车制造商能够降低产品开发成本和时间,同时提高他们生产的汽车的安全性、舒适性和耐用性。CAE工具的预测能力已经发展到大部分设计验证都是通过计算机模拟(诊断而不是物理原型测试来完成的地步。CAE的可靠性基于所有作为输入的正确假设,并且必须识别关键输入(B)。尽管CAE技术已经取得了很大的进步,并且在工程领域得到了广泛的应用,但是物理测试仍然是必须的。它用于验证和模型更新,以准确定义荷载和边界条件,并为最终原型签署。
2.CAE在产品开发过程中的应用前景
①尽管CAE作为验证、故障排除和分析工具已经建立了良好的声誉,但是仍然有一种观点认为,在设计周期中,足够准确的结果出现得相当晚,从而真正推动了设计。随着现代产品变得越来越复杂,这可能会成为一个问题。它们包括智能系统,这导致对包括控制在内的多物理分析的需求增加,并且包含新的轻质材料,而工程师们通常不太熟悉这些材料。CAE软件公司和制造商一直在寻找工具和过程改进来改变这种情况。
②在软件方面,他们不断寻求开发更强大的解决方案,以更好地利用计算机资源,并将工程知识纳入预处理和后处理。在工艺方面,他们试图在三维CAE、一维系统模拟和物理测试之间实现更好的匹配。这将提高建模的真实性和计算速度。
③CAE软件公司和制造商试图更好地将CAE集成到整个产品生命周期管理中。通过这种方式,他们可以将产品设计与产品使用联系起来,这是智能产品所需要的。这种增强的工程过程也称为预测工程分析。
3.参照:
①有限元软件包清单
②曲面的计算机表达
有限元分析(FEA/FEM)
④计算流体力学
⑤计算电动力学(CEM)
⑥多体动力学(MBD)
⑦电子设计自动化
⑧多学科设计优化(MDO)
⑨计算机辅助工程CAD编辑器的比较
⑩虚拟样机
计算机辅助制造 Computer-aided manufacturing (CAM)
1.定义:
①计算机辅助制造(CAM)也称为计算机辅助建模或计算机辅助加工是指在制造工件时使用软件控制机床。这不是CAM的唯一定义,但它是最常见的。也可指使用计算机协助制造厂的所有操作,包括计划、管理、运输和储存。它的主要目的是创造一个更快的生产过程和零部件以及具有更精确尺寸和材料一致性的工具,在某些情况下,只使用所需的原材料量(从而最大限度地减少浪费),同时减少能源消耗。CAM现在是一个用于学校和低等教育目的的系统。[在哪里?]计算机辅助制造(CAM)是在计算机辅助设计(CAD),有时是计算机辅助工程(Computer–Aided Engineering,CAE)(CAE)之后的计算机辅助制造过程,因为在CAD中生成并在CAE中验证的模型可以输入到CAM软件中,然后控制机床。计算机辅助制造在许多学校和计算机辅助设计(CAD)一起用来创建对像。
2.概述
①传统上,计算机辅助制造(CAM)是一种数控机床(NC)编程工具,其中二维(2-D)或三维(3-D)的零件模型是在CAD中生成的。与其他“计算机辅助”技术一样,计算机辅助制造并不能消除对制造工程师、NC程序员或机械师等熟练专业人员的需求。CAM通过先进的生产力工具利用最熟练的制造专业人员的价值,同时通过可视化、模拟和优化工具建立新专业人员的技能。
②CAM工具通常将模型转换为目标机器能够理解的语言,通常是G代码。这种数控机床可以应用于机械勋加工工具,或者最近应用于3D打印机。
3.历史
①CAM的早期商业应用是在汽车和航空航天工业的大公司:例如,Pierre Béziers在1960年代为雷诺汽车车身设计和工具开发CAD/CAM应用UNISURF。1950年,德拉瓦尔汽轮机公司的亚历山大·哈默发明了一种技术,用穿孔卡读卡器控制钻头,逐步将涡轮叶片从金属的固体金属块中钻出。
②从历史上看,CAM软件被认为有几个缺点,需要过高的参与水平由熟练的数控机床。法洛斯创造了第一个CAD软件,但这有严重的缺点,并迅速采取了回到开发阶段。CAM软件将输出代码的最低能力的机器,因为每个机床控制添加到标准的G代码集增加灵活性。在某些情况下,如不正确设置CAM软件或特定的工具,数控机床需要手动编辑之前,程序才能正常运行。这些问题没有一个是不可克服的,一个有思想的工程师或熟练的机器操作员不能克服原型或小规模生产运行:G-Cod是一种简单的语言。在高生产或高精度车间,遇到一套不同的问题,经验丰富的数控机床必须既手工编码程序和运行CAM软件。
③CAD与其他组件的整合需要一个有效的CAD数据交换。通常有必要迫使计算机辅助设计操作员以各种软件支持的IGES或STL或Parasolid格式等常见数据格式之一导出数据。CAM软件的输出通常是一个简单的G-code/M-code文本文件,有时长达数千条命令,然后通过一个直接数控机床(dNC)程序传输到机床上,或者在现代控制器中使用一个普通的USB存储设备。
④CAM软件包不能,现在仍然不能像机械师那样进行推理。他们不能将工具路径优化到大规模生产所需的程度。用户可以选择刀具类型、加工工艺和使用路径。虽然工程师可能具有G代码编程的工作知识,但随着时间的推移,小的优化和磨损问题会越来越多。需要机械加工的大批量生产的产品通常最初是通过铸造或其他非机械方法生产出来的。这使手写,短,高度优化的G代码,不能在CAM包生成。
⑤至少在美国,进入劳动力市场的年轻熟练的机械师缺乏能够在制造业的极端环境下工作的能力,缺乏高精度和大规模生产的能力。随着计算机辅助制造软件和机器变得越来越复杂,机械师或机器操作员所需要的技能越来越接近于程序员和工程师,而不是从劳动力中消除数控机械师。
4.应用与发展
4.典型的关注领域
①高速加工,包括刀具路径的流线型
②多功能加工
③5轴加工
④特征识别与加工
⑤机械加工过程自动化
⑥易用性
5.克服历史缺陷
①随着时间的推移,CAM的历史缺陷正在被削弱,无论是利基解决方案的提供者还是高端解决方案的提供者。这主要发生在三个领域:
②易于使用
③制造业的复杂性
④与PLM和扩展企业的集成
6.易于使用
①对于刚刚开始作为CAM用户的用户来说,开箱即用的功能提供过程向导、模板、库、机床工具包、基于自动特性的加工和工作功能特定的可裁剪用户界面,建立用
户信心并加快学习曲线,
②使用户有信心进一步建立在三维可视化通过与三维CAD环境更紧密的集成,包括避免错误的模拟和优化。
7.制造业的复杂性
④制造环境日益复杂。制造工程师、NC程序员或机械师对CAM和PLM工具的需求,类似于现代飞机系统飞行员对计算机辅助的需求。没有这种帮助,现代机器就
不能正确使用。
⑤今天的CAM系统支持全系列的机床,包括:车削,5轴加工,水射流,激光/等离子切割,电火花线切割。今天的CAM用户可以很容易地生成流线型刀具路径,优化
刀具轴倾斜,以获得更高的进给速度,更好的刀具寿命和表面光洁度,以及理想的切削深度。除了编程切削操作,现代CAM软件还可以驱动非切削操作,如机床探
头。与PLM和扩展企业LM的集成,从概念到成品的现场支持,将制造业与企业运营集成。
8.为了确保易于使用适合用户的目标,现代CAM解决方案是可扩展的,从一个独立的CAM系统到一个完全集成的多CAD3D解决方案集。这些解决方案是为了满足制造人员的全部需求,包括零件计划,车间文件,资源管理和数据管理和交换。为了防止这些解决方案从详细的工具特定信息一个专门的工具管理
9.加工过程:大多数机械加工过程经历了许多阶段,每个阶段都是通过各种基本和复杂的策略来实现的,这取决于零件设计、材料和可用的软件。
1.粗加工
①这个过程通常从原料开始,称为还料,或粗铸件,数控机床粗略地切割成最终模型的形状,忽略了细节。在铣削过程中,由于采用了多个“步骤”来去除材料。因此铣削的结果往往会产生阶梯或台阶的外观。这样可以最大限度地利用机器的水平切割材料的能力。常见的策略是之字形清理,偏移清理,径向粗加工,休息粗加工,和螺旋线铣削(自适应清理)。这个阶段的目标是在最短的时间内去除最多的材料,而不需要太多的关注整体尺寸精度。当粗加工一个零件时,有意留下少量多余的材料,以便在后续的精加工操作中去除。
2.半成品
①这个过程开始于一个粗糙的部分,不均匀地接近模型和削减到一个固定的偏移距离从模型。半精加工道次必须留下少量的材料(称为扇贝),以便刀具能够准确地切削,但不能太少,以至于刀具和材料偏离切削表面。常用的传球策略有栅格传球、吃水线传球、连续跨步传球、铅笔铣球。
3.结束
①精加工涉及许多光通过材料在精细的步骤,以生产完成的部分。当完成一个部分,步骤之间的传递是最小的,以防止工具偏斜和材料回弹。为了减少侧向刀具载荷,刀具啮合减少,而进给速度和主轴速度通常增加,以保持目标表面速度(SFM)。在高进给和转速下的轻载荷通常被称为高速加工(HSM),可以提供快速加工时间和高质量的加工结果。这些较轻的通道的结果是一个高度精确的零件,具有均匀的高表面光洁度。除了修改安全轴速外,机械师通常还要对特定的立铣刀进行精加工,这些立铣刀从来不用作粗加工立铣刀。这样做是为了保护立铣刀不会在切削表面产生切屑和缺陷,这些缺陷会在最后部分留下条纹和瑕疵。
4.轮廓铣削
①在铣削应用的硬件与旋转工作台和/或旋转头轴,一个单独的精加工过程称为轮廓可以执行。工件或工具不是通过细粒度的递增来近似表面,而是通过旋转使工件或工具的切削表面与理想零件特征相切。这产生了一个优秀的表面光洁度与高尺寸精度。这一工艺通常用于加工涡轮和叶轮等复杂的有机形状,由于它们的复杂曲线和重叠的几何形状,不可能用三轴机床加工。
有两种类型的三维实体造型
- 参数化建模允许操作员使用所谓的“设计意图”。创建的对象和特性是可修改的。任何未来的修改都可以通过更改原始部分的创建方式来进行。如果一个特征要从零件的中心定位操作者应该从模型的中心定位它。可以使用零件中已有的任何几何对象来定位特征,但这
种随机放置会破坏设计意图。如果操作者按照零件的功能设计零件,参数化建模者就能够在保持几何和函数关系的同时对零件进行修改。 - 直接或明确的建模提供了编辑几何没有历史树的能力与直接建模,一旦草图是用来创建几何图形的草图被纳入到新的几何和设计师只是修改几何而不需要原来的草图。与参数化建模一样,直接建模能够包括选定的几何形状之间的关系(例如,切线,同心度)。
- 自由式CAD
- 进一步的信息:地面到地面的交叉问题
- 高端系统提供的能力,以纳入更多的有机,美学和人体工程学的设计特点。自由曲面造型经常与实体相结合,使设计师能够创建符合人体形态和视觉要求的产品,以及它们与机器的接口。
CAD/CAE/CAM几何引擎-软件概述 郝建兵
CAD/CAE/CAM
CAD
CAE
CAM
几何模型内核
国内用的大多是 Open CASCADE,但是技术比较老了
ACIS 两个老大之一
Open Cascade
Parasolid 两个老大之一
Autodesk的内核
各种CAD
AC3D
Alibre Design
Archicad
AutoCAD
Autodesk Inventor
AXSTREAM
BricsCAD
CATIA
Cobalt (CAD program)
CorelCAD
Fusion 360
IntelliCAD
IRONCAD
KeyCreator
Landscape Express
MEDUSA
MicroStation
Modelur
Onshape
PTC Creo
Remo 3D
Rhinoceros 3D
Siemens NX
SketchUp
Solid Edge
SpaceClaim
T-FLEX CAD
Vectorworks
BRL-CAD
FreeCAD
乐高模型
LeoCAD
OpenSCAD
QCAD
Salome (software)
Salome (software)
SolveSpace
BricsCAD
TiffinCAD
Tinkercad
其他
自定义信号和槽
1.自定义信号
写到signals下
返回void
需要声明,不需要实现
可以有参数,可以重戟
2.自定义槽
返回void
需要声明,也需要实现
可以有参数,可以重载
写到public slot下或者public或者全局函数
3.建立连接
// 老师饿了,学生请吃饭
connect(te,&Teacher::hungry,st,&Student::treat);
4.进行触发
自定义信号重载
当自定义信号和槽出现重载
8.1 需要利用还数指针明确指向函数的地址·
8.2void(Teacher::tsignal )QString )=&Teacher::hungry;
8.3 QString转成char *
8.3.1.ToUtf80转为QByteArray
8.3.2.Data0转为Char *
8.4信号可以连接信号
8.5断开信号disconnect
带参数的
void (Teacher::*teacherSignal)(QString) = &Teacher::hungry;
void (Student::*StudentSlot)(QString) = &Student::treat;
void Student::treat(QString foodName){
// QString -> char * 先转成QByteArray(.toUtf8()) 再转成Char* ()
qDebug() << "请老师吃。。。" << foodName.toUtf8().data();
}
按钮触发
// 用一个按钮调用下课
QPushButton *btn = new QPushButton("下课了",this);
// 重置窗口daxiao
this->resize(600,400);
connect(btn,&QPushButton::clicked,this,&Widget::classIsOver);
信号触发信号
// 无参的信号和槽连接
void (Teacher::*teacherSignal2)(void) = &Teacher::hungry;
void (Student::*StudentSlot2)(void) = &Student::treat;
connect(te,teacherSignal2,st,StudentSlot2);
// 信号连接信号
connect(btn,&QPushButton::clicked,te,teacherSignal2);
断开信号disconnect
拓展
1、信号是可以连接信号
2、一个信号可以连接多个槽函数
3、多个信号可以连接同一个糟函数
4、信号和槽函数的参数必须类型一一对应
5、信号和槽的参数个数是不是要一致?信号的参数个数可以多余槽函数的参数个数
connect(信号的发送者,发送的信号signal信号),信号接受者,槽函数SLOT)
优点:参数直观
缺点:编译器不会检测爸数类型:
lambda表达式
[=](){
btn->setText("aaa");
}();
返回值
int ret = []()->int{return 1000;}();
qDebug() << "ret = " << ret;
mutable修饰
QPushButton *myBtn1 = new QPushButton(this);
QPushButton *myBtn2 = new QPushButton(this);
myBtn1->move(100,100);
int m = 10;
connect(myBtn1,&QPushButton::clicked,this,
[m]()mutable {m=100+10;qDebug()<< m;});
connect(myBtn2,&QPushButton::clicked,this,
[=](){qDebug()<<m;});
qDebug() << m;
案例
QPushButton * btnClose = new QPushButton;
btnClose->setText("close");
btnClose->move(100,0);
btnClose->setParent(this);
connect(btnClose,&QPushButton::clicked,this,
[=](){
btnClose->setText("关闭");
emit te->hungry("娃哈哈");
// this->close();
});