QT二 QT使用generate form 生成常用UI,各种UI控件

一 。没有使用general form  和  使用 general form 后,file层面和代码层面的不同比较

file层面的不同

代码层面的不同,

在 使用了general form之后,在主界面的构造方法中,使用ui->setupUi(this),就完成了所有UI的处理。

而之前我们的没有使用general form的时候,需要自己通过写代码一步一步的完成。

比较多出来的file 以及 代码层面的不同 后的 疑问:

在没有使用general form时,我们的代码生成是使用了一系列函数生成的,那么是不是 ui->setupUi(this);的内部也是和我们使用一系列函数差不多呢?

验证:

1.我们先来看多出来的mainwindow.ui是个啥?

在QT Creator中双击 mainwindow.ui,看到会跳转到一个可以操作的UI界面

使用 UE 打开 mainwindow.ui,可以看到是一个xml格式的文件

 
 结论:mainwindow.ui是一个xml的文件。该文件中用xml格式记录了当前mainwindow中的组件。QT Creator在打开这个xml的时候,做了事情,将xml文件变成了可视化的UI。如果我们通过可视化UI,给里面的增添改UI,然后QT Creator会将我们的操作变成xml文件。

验证QT Creator 将开发者可视化UI的操作变成xml实验:

之前界面和xml是这样:

我们往界面上通过可视化UI 添加一个 qpushbutton,保存后,可以看到xml文件多了一些东西

2. 那么这个 ui->setupUi(this)是干啥的呢?

我们按照以往的经验,在 ui->setupUi(this) 这一行上,按住ctrl+鼠标左键,看一下这一行代码跳转到哪里?--结果跳出来error,

这个error的意思是:我们找不到ui_mainwindows.h这个文件。或者没有权限打开这个文件。该文件是在这个目录下:

D:\code_qt\build-004qtUIstudy-Desktop_Qt_5_14_2_MinGW_32_bit-Debug\ui_mainwindow.h

那我们在磁盘里面找一下这个文件。发现确实没有这个文件。

我们再来看一下给出的error信息 路径是在

D:\code_qt\build-004qtUIstudy-Desktop_Qt_5_14_2_MinGW_32_bit-Debug\ui_mainwindow.h

这时候就想到了,这个应该是 项目build 之后生成的吧,于是查看了一下该项目的配置,果然是在D:\code_qt\build-004qtUIstudy-Desktop_Qt_5_14_2_MinGW_32_bit-Debug下面,也就是我们需要构建之后,才会生成 ui_mainwindow.h这个文件。

构建此项目

构建完成后,发现就生成了这个目录了。

在QT Creator 中 打开ui_mainwindow.h文件查看,还是ctrl+鼠标左键打开。为什么不用UE直接打开呢?因为在 QT Creator 中打开代码有关联性,方便查看。我们终于看到了熟悉的画面,和我们不使用general form时候的代码。

二 使用general form 后,QT 帮我们到底做了什么 的回答

1.QT Creator 提供了可视化的UI,方便开发者增删改UI,

2.改动的UI,QTCreator 会变成本质上是xml的 xxx.ui文件

3.然后QT 会在build 的过程中,将 xxx.ui文件变成ui_xxx.h文件。而这个 ui_xxx.h 文件并不是.h文件,实际上也含有.cpp的内容。

总结

                通过QT build 的过程

xxx.ui--------------------------------------> 变成 最终的 ui_xxx.h 文件

在代码中 通过 ui->setupUi(this); 这一行代码 加载 ui_xxx.h,完成 UI的创建。

好处1:

开发者可以通过可视化UI ,实现自己想要的UI界面。QT 帮忙转换成代码,最终通过ui->setupUi(this)加载这些代码生成UI。

 好处2:

开发者可以通过 查看这些可视化UI的最终代码,学习在代码层面实现,而不是借助可视化UI工具。

另一个问题:既然QT给了我们可视化UI的界面,为什么还要在第一章学习用代码生成UI呢?这是因为两个原因:1是在实际工作用,用代码生成UI的部分也不少。作为开发者首先就要要弄清楚这个原理。2是因为我们在后面学习到深度定制某一个UI控件的时候(假设我们这里的需求是自己开发一个button,自己的这个button 不能接受鼠标的点击事件,),这就需要我们自己create mybutton,并重写 mybutton的click事件,或者直接屏蔽click事件,这些的基础都是自己创建UI并。如果这块暂时想不明白也没有关系,学到后面知识就了解了。

三。 QT控件学习

实际上就是学习如下图的所有,但是有些UI不常用,有些UI,常用的部分,会在标题前面加上红色的"常用"两个字

四 ,Layouts 部分详解

垂直布局

水平布局(QHBoxLayout

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/74051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt中多线程

在Qt中实现多线程主要有两种常用方式&#xff1a;基于QThread的子类化和QObjectmoveToThread的Worker模式。以下是详细说明和示例代码&#xff1a; 1. 传统方法&#xff1a;继承 QThread&#xff08;适用于简单任务&#xff09; #include <QThread> #include <QDebug…

从PGC到AIGC:海螺AI多模态内容生成系统架构一站式剖析

海螺AI&#xff1a;基于多模态架构的下一代认知智能引擎 海螺AI核心模型架构基础模型&#xff1a;abab-6.5语音模型&#xff1a;speech-01 视频生成管线关键子系统快速接入海螺AI 蓝耘MaaS平台什么是MaaS平台&#xff1f;支持的大模型蓝耘搭载海螺AI的优势 实战应用教程如何注册…

二分查找上下界问题的思考

背景 最近在做力扣hot100中的二分查找题目时&#xff0c;发现很多题目都用到了二分查找的变种问题&#xff0c;即二分查找上下界问题&#xff0c;例如以下题目&#xff1a; 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查找元素的第一个和最后一个位置 它们不同于查找…

android adjust 卸载与重装监测

想要洞察应用内用户的留存率,可以通过Adjust 的卸载与重装进行监测 名词解释: 卸载:集成完成后,卸载应用,安装状态为:卸载 重装:如果应用已经卸载,但一段时间后又进行安装,则会被视为重装。 📢📢📢:adjust 文件中说到24 小时后,可以再 adjust 控制台看安装…

算法系列——有监督学习——4.支持向量机

一、概述 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种应用范围非常广泛的算法&#xff0c;既可以用于分类&#xff0c;也可以用于回归。 本文将介绍如何将线性支持向量机应用于二元分类问题&#xff0c;以间隔&#xff08;margin&#x…

【Mani_skill】success判断的核心调用逻辑

1. 可视化调用流程&#xff08;from Deepseek-r1-Cursor&#xff09; [RL算法调用 env.step()]↓ 调用 env.get_info()↓ 调用 env.evaluate() → 返回包含 success 的字典↓ 将 success 存入 info 字典↓ 在 step() 中处理终止条件&#xff1a; terminated success | fail

【图像处理基石】什么是HDR图片?

1. 什么是HDR图片&#xff1f; HDR&#xff08;高动态范围图像&#xff0c;High Dynamic Range&#xff09;是一种通过技术手段扩展照片明暗细节的成像方式。以下是关于HDR的详细说明&#xff1a; 核心原理 动态范围&#xff1a;指图像中最亮和最暗区域之间的亮度差。人眼能…

嵌入式笔记 | 正点原子STM32F103ZET6 4 | 中断补充

1. 外设引脚重映射 1.1 定义 在STM32中&#xff0c;每个外设的引脚都有默认的GPIO端口&#xff0c;但有些引脚可以通过重映射寄存器将功能映射到其他端口。这种机制称为引脚重映射&#xff0c;主要用于解决引脚复用冲突或优化PCB布线。 1.2 重映射的类型 部分重映射&#x…

如何选择合适的 AI 模型?(开源 vs 商业 API,应用场景分析)

1. 引言 在 AI 迅猛发展的今天&#xff0c;各类 AI 模型层出不穷&#xff0c;从开源模型&#xff08;如 DeepSeek、Llama、Qwen&#xff09;到商业 API&#xff08;如 OpenAI 的 ChatGPT、Anthropic 的 Claude、Google Gemini&#xff09;&#xff0c;每种方案都有其优势与适用…

攻克 3D 模型网站建设难题,看迪威系统优势

在当今数字化时代&#xff0c;3D 模型广泛应用于建筑设计、游戏开发、工业制造、文化创意等诸多领域。拥有一个功能强大的 3D 模型网站&#xff0c;对于企业展示产品、设计师分享作品、教育机构开展教学等都具有重要意义。然而&#xff0c;构建这样一个网站却并非易事&#xff…

使用uniapp的vite版本进行微信小程序开发,在项目中使用mqtt连接、订阅、发布信息

1、保证在微信公众平台配置socket合法域名 2、项目中使用mqtt 建议在package.json中配置"mqtt": “4.1.0”&#xff0c;使用这个版本的依赖 页面中引入mqtt并配置连接 // ts-ignoreimport * as mqtt from mqtt/dist/mqtt.js; //要使用这里面的const state reacti…

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(6)

1.问题描述&#xff1a; 使用华为内置的MapComponent&#xff0c; 发现显示不出来。查看日志&#xff0c; MapRender底层有报错。 解决方案&#xff1a; 麻烦按以下步骤检查下地图服务&#xff0c;特别是签名证书指纹那部分。 1.一般没有展示地图&#xff0c;可能和没有配置…

现代复古像素风品牌海报游戏排版设计装饰英文字体 Psygen — Modern Pixel Font

Psygen 是一种像素化等宽字体&#xff0c;具有强烈的复古未来主义和网络风格美学。块状的、基于网格的字体采用了早期的计算机界面、街机游戏排版和 ASCII 艺术。 该字体支持拉丁文、西里尔文和希腊文脚本&#xff0c;使其适用于多语言设计。扩展的字符集还具有唯一的符号和方…

小科普《DNS服务器》

DNS服务器详解 1. 定义与核心作用 DNS&#xff08;域名系统&#xff09;服务器是互联网的核心基础设施&#xff0c;负责将人类可读的域名&#xff08;如www.example.com&#xff09;转换为机器可识别的IP地址&#xff08;如192.0.2.1&#xff09;&#xff0c;从而实现设备间的…

lunar是一款无第三方依赖的公历 python调用

lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)、佛历和道历工具&#xff0c;支持星座、儒略日、干支、生肖、节气、节日、彭祖百忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道…

力扣hot100——三数之和(双指针)

题目&#xff1a;三数之和 排序 双指针 本题的难点在于如何去除重复解。 算法流程&#xff1a; 1、特判&#xff0c;对于数组长度 n&#xff0c;如果数组为 null 或者数组长度小于 3&#xff0c;返回 []。 2、对数组进行排序。 3、遍历排序后数组&#xff1a; &#xff08…

操作系统为ubantu的服务器上部署nginx软件基础步骤总结

今天在这里&#xff0c;我们总结一下ubantu的服务器上部署nginx软件&#xff0c;请按照以下步骤进行安装&#xff1a; 1、更新包列表&#xff1a; 首先更新你系统中的可用软件包列表&#xff0c;以确保你可以安装最新版本。 sudo apt update2、 Ubuntu上更新已安装软件包&…

记录一次,rabbitmq开启stomp插件之后,还是连不上15674端口的问题

原因是装在docker 里面的rabbitmq 没有映射15674端口&#xff0c;需重新删除容器之后重新运行 docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -p 15674:15674 -p 1883:1883 -p 15675:15675 rabbitmq:版本号 进入docker容器开启插件 docker exec -it rabbitm…

MATLAB 控制系统设计与仿真 - 27

状态空间的标准型 传递函数和状态空间可以相互转换&#xff0c;接下来会举例如何有传递函数转成状态空间标准型。 对角标准型 当 G(s)可以写成&#xff1a; 即&#xff1a; 根据上图可知&#xff1a; 约当标准型 当 G(s)可以写成&#xff1a; 即&#xff1a; 根据上图…

1.FastAPI简介与安装

文章目录 为什么选择FastAPI&#xff1f;FastAPI支持的功能FastAPI的安装第一个FastAPI应用运行应用 为什么选择FastAPI&#xff1f; python web开发: Django: 适合大型复杂项目&#xff1b;Flask&#xff1a;适合灵活开发&#xff0c;搭建小型项目&#xff1b;FastAPI: 兼具开…