溧阳 招网站开发兼职阿里云 wordpress博客

张小明 2026/1/10 2:32:09
溧阳 招网站开发兼职,阿里云 wordpress博客,查询个人信息的网站,视觉设计网站1.QT概述什么是QT#xff0c;QT是一个跨平台的C图形用户界面应用程序框架。它可以为程序开发者提高建立图形化界面的所有功能。它是完全面向对象的#xff0c;很容易进行扩展。QT为开发者提供了一种基于基础组件的开发模式#xff0c;开发者可以通过简单的拖拽和组合来实现复…1.QT概述什么是QTQT是一个跨平台的C图形用户界面应用程序框架。它可以为程序开发者提高建立图形化界面的所有功能。它是完全面向对象的很容易进行扩展。QT为开发者提供了一种基于基础组件的开发模式开发者可以通过简单的拖拽和组合来实现复杂的应用程序同时也可以使用C来进行更高级的开发。图形化界面指采用图像的方式显示计算机的用户操作界面是计算机与使用者之间的对话接口。2.设计一个QT程序2.1使用图形化的方式实现一个按钮这里在创建QT项目的时候要选择QWidegt表示创建一个类来继承哪个类这个创建出来的类就包含了基类的大部分功能。创建项目以后进入到主界面是这样的进入到图形设计界面拖拽PushButton创建一个按键回到主界面编译代码并运行2.2使用代码创建一个按钮这里我们来到Widget.cpp的界面为创建按钮写一部分代码运行以后看到确实也出现了一个按钮。虽然看起来两种方式不太一样但本质上是一样的我我们可以在项目文件夹种找到一个带有build开头加项目名称的文件然后里面有一个ui_widget.h的文件打开这个ui_widget.h的文件可以看到系统已经为我们在ui_widget类中自动创建了一个PushButton的对象。这是QT的编译器使用qmake的方式根据xml来进行的一种元编程的方式即通过一些代码帮我们自动生成C代码的技术。3.文件解析在我们创建项目以后QT自动为我们生成了许多文件这里我们对其中的一些进行解析。3.1widget.h文件解析Q_OBJECT这是一个QT的宏这个宏允许使用信号和槽机制后续我们会讲到。QWidgetQWidget窗口类的头文件UI::Widget *ui通过这个指针可以访问UI设计界面中的任意控件。在ui_widget.h文件中UI::Widget是继承于UI_Widget这个UI设计界面类的也就是代表UI::Widget能访问设计界面中公有的所有成员函数与成员变量。通过一个指针ui就能访问到UI设计界面的任意控件。3.2widget.cpp解析widget.cpp ⽂件是类 Widget 的实现代码所有在窗体上要实现的功能添加在此⽂件中。3.3widget.ui文件解析widget.ui 是窗体界⾯定义⽂件是⼀个 XML ⽂件定义了窗⼝上的所有组件的属性设置、布局及其信号与槽函数的关联等。⽤ UI 设计器可视化设计的界⾯都由 Qt ⾃动解析并以 XML ⽂件的形式保存下来。在设计界⾯时只需在 UI 设计器⾥进⾏可视化设计即可⽽不⽤管 widget.ui ⽂件是怎么⽣成的。4.认识对象模型(对象树)4.1QObject 是以对象树的形式组织起来的。在QT中创建很多对象的时候都要提供一个Parent对象指针就例如这里传的this指针代表这两个对象将当前widget类作为他们的父对象了。为什么要创建一个父对象首先在我们创建PushButton这个按钮的时候我们并没有对它进行析构释放这是否会造成内存泄漏并不会这就归咎于对象树的作用了。当创建一个QObject对象的时候QObject的构造函数会解释一个QObject指针作为参数初始化它的父对象指针。也就是说在创建一个QObject对象的时候显示的传递一个QObject指针创建的这个对象就会自动被加入到父对象大的children()列表。当整个程序执行完以后窗口Widget会去释放自身发现它还有子对象就会先去调用子对象的析构函数。当所有子对象释放了该父对象才会释放也就保证了它的每一个子对象不需要显示的析构和释放。这种机制在 GUI 程序设计中相当有⽤。例如⼀个按钮有⼀个 QShortcut快捷键对象作为其⼦对象。当删除按钮的时候这个快捷键理应被删除。这是合理的。QPushButton源码中的构造4.2QWidget 是能够在屏幕上显⽰的⼀切组件的⽗类。QWidget继承自QObject因此它也继承了这种对象树的关系。一个孩子还自动成为父组件的一个子组件。因此它会显⽰在⽗组件的坐标系统中被⽗组件的边界剪裁。例如当⽤⼾关闭⼀个对话框的时候应⽤程序将其删除那么我们希望属于这个对话框的按钮、图标等应该⼀起被删除。事实就是如此因为这些都是对话框的⼦组件。当然我们也可以⾃⼰删除⼦对象它们会⾃动从其⽗对象列表中删除。⽐如当我们删除了⼀个⼯具栏时其所在的主窗⼝会⾃动将该⼯具栏从其⼦对象列表中删除并且⾃动调整屏幕显⽰。QWigdet的声明4.3QT引入对象树的概念在一定程度上解决了内存泄漏的问题当⼀个 QObject 对象在堆上创建的时候Qt 会同时为其创建⼀个对象树。不过对象树中对象的顺序是没有定义的。这意味着销毁这些对象的顺序也是未定义的。任何对象树中的 QObject 对象 delete 的时候如果这个对象有 parent则⾃动将其从 parent 的children() 列表中删除如果有孩⼦则⾃动 delete 每⼀个孩⼦。Qt 保证没有 QObject 会被delete 两次这是由析构顺序决定的。如果在像在这样栈上创建两个对象正常情况下不会发生什么问题在C中局部对象的析构顺序是按照创建顺序的相反顺序来的此处quit先析构将自己从qwindow的子对象列表删除然后qwindow再析构这是没有问题的。但是如果是一下这种情况就会出现析构两次quit的问题qwindow先定义首先会析构然后去调用自己子对象中quit的析构等quit析构完以后此时quit还会进行一次它自己原本应该进行的析构结果就会程序就崩溃了quit析构了两次。所以在QT中创建对象尽量在构造的时候就指定父对象然后在堆上创建。QT对象图4.4代码演示-父对象自动析构子对象创建一个新的类指定继承的类修改继承类和增加一个析构函数定义析构函数和显示调试信息在widget.h中创建一个按键并显示编译与运行代码这里MyPushButto继承QPushButton使用了其父类的成员函数创建了一个按钮关闭窗口的时候wiget先被析构button被自动释放了。对象树确保的是先释放⼦节点的内存, 后释放⽗节点的内存。⽽析构函数的调⽤顺序则不⼀定遵守上述要求.。因此看到⼦节点的析构执⾏顺序反⽽在⽗节点析构顺序之后。5.总结通过本文的学习我们正式推开了 Qt 开发的大门。我们不仅认识了 Qt 这个强大的跨平台 C 图形用户界面框架还通过实战掌握了构建 Qt 程序的两个核心维度开发模式无论是直观的 UI 设计器拖拽还是灵活的纯代码编写我们通过解析ui_widget.h等底层文件明白了它们本质上殊途同归最终都由 Qt 的元编程机制转化为标准的 C 代码。核心机制文章重点剖析了 Qt 的对象树Object Tree模型。这是 Qt 区别于普通 C 开发的重要特性通过QObject的父子关系链Qt 巧妙地实现了内存的自动回收极大地降低了内存泄漏的风险。理解对象树与文件结构是成为一名合格 Qt 开发者的基石。掌握了这些基础我们便有了构建更复杂、更健壮的 GUI 应用程序的能力。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

提高网站打开速度的7大秘籍中国风配色网站

Langchain-Chatchat 部署需要多少 GPU 显存?资源需求深度解析 在企业级 AI 应用加速落地的今天,越来越多组织希望将大模型能力部署到本地环境——既要保障敏感数据不外泄,又要实现低延迟、可定制的智能服务。Langchain-Chatchat 正是在这一背…

张小明 2025/12/28 4:24:01 网站建设

网站开发主管岗位说明徐州做网站建设公司

多任务联合训练:Llama-Factory支持混合数据集微调 在大模型落地应用日益加速的今天,一个现实问题摆在开发者面前:如何用有限的数据和算力,让一个语言模型同时掌握问答、摘要、分类等多种能力?传统的做法是为每个任务单…

张小明 2025/12/29 5:47:17 网站建设

网站搭建详细流程电商推广平台哪个好

为什么Apache Fesod能成为百万级Excel数据处理的颠覆者? 【免费下载链接】fastexcel easyexcel作者最新升级版本, 快速、简洁、解决大文件内存溢出的java处理Excel工具 项目地址: https://gitcode.com/gh_mirrors/fast/fastexcel 在当今数据驱动的…

张小明 2025/12/28 23:36:29 网站建设

做网站运营需要具备什么能力电商怎么注册开店

如何快速掌握Foldseek:蛋白质结构比对的终极指南 【免费下载链接】foldseek Foldseek enables fast and sensitive comparisons of large structure sets. 项目地址: https://gitcode.com/gh_mirrors/fo/foldseek 蛋白质结构比对是现代生物信息学研究中的关键…

张小明 2025/12/23 18:39:48 网站建设

南昌网站建设有限公司嘉兴建站模板系统

光照探针的作用光照探针(Light Probes)是Unity中用于解决动态物体间接光照问题的核心技术,主要作用包括:‌为动态物体提供间接光照‌:在静态场景中,动态物体无法直接使用烘焙光照贴图,光照探针通过存储空间中的光照信息…

张小明 2025/12/23 11:51:56 网站建设

游戏平台网站建设如何做信用网站截图

Wan2.2-T2V-A14B如何应对长序列视频生成中的时序断裂问题? 在影视预演的会议室里,导演盯着屏幕皱起眉头:“这个角色前一秒还在雨中跳舞,怎么下一秒就换了身衣服?而且……她是谁?” 这并非演员失误&#xff…

张小明 2025/12/23 14:10:25 网站建设