Qt 5.14.2 学习记录 —— 일 新项目
文章目录
- 1、创建
- 2、查看代码 ---- main.cpp
- 3、查看代码 ---- widgt.h
- 4、查看代码 ---- widgt.cpp和widget.ui
- 5、查看代码 ---- Empty.pro
- 6、运行产生的中间文件
1、创建
左上角的文件,新建文件或项目。如果要写一个GUI程序,应当选择Application,另一个选择Qt Widgets Application,这是传统的开发GUI方式。下一个则是写一个TUI,也就是终端。下面的几个Quick则是新的GUI开发方式,不过很多还是会用Widgets。

choose并选择路径,确定名字后,Build System部分,Qt会通过这里的工具,基于用户的代码,生成对应的C++代码,也就是元编程,最终编译的代码就是这些。qmake是挺老的Qt构建工具;CMake在很多开源项目都用,不只Qt在用;Obs是比较新的Qt构建工具,但用的人很少。这里就用qmake。
Details部分,Base class是指,Qt通过构建工具生成的代码中,主要的类的父类。QMainWindows是一个完整的应用程序窗口;QWidget表示一个控件,也就是窗口上的元素,比如按钮,下拉框等;QDialog表示对话框。Qt中内置的类都是以Q开头的名字。
选择的Base class和上面的类名最好用一样的,比如默认的Widget和CWidget。Qt可以通过C++代码创建界面,也可以通过Form file以图形化的方式来生成界面。勾选上这个Form file就可以使用Qt Designer或Qt Creator来编辑这个ui文件。
下一个部分和翻译文件相关,可以直接下一步。
之前选择了什么,现在就显示什么,比如MSVC和MinGW。我之前只选了MinGW。然后下一步即可,不需要填别的。
最后一部分,如果要提交到仓库去,就选择git,没有就None就行了。
现在这是我的初始界面:

运行就是左下角右箭头,下面则是调试。运行后初始的界面是这样的:

想要再创建一个项目,左上角文件里关闭所有项目和编辑器,然后再创建即可。
如果要创建一个C++类,那就在文件和类里选择C++,选择右边的C++ Class,类名自己定,Base class用来选择继承自哪个库中的类。
2、查看代码 ---- main.cpp
初始main.cpp:

引入的头文件就是选择文件Base class时随之对应选择的头文件。编写一个Qt界面,必须要有QApplication对象。Widget就是选择Base class时写的类名。那么这段代码就是创建一个控件对象,并显示出来。Widget的基类是QWidget,show()让控件显示出来,hide()让控件隐藏,exec()执行程序,这三个方法就是QWidget的。不过Qt的exec和Linux的exec,即进程程序替换不是一个概念。
3、查看代码 ---- widgt.h
初始widgt.h:

这里也引入了QWidget头文件。定义了一个命名空间。
Widget基类是QWidget,也就是创建时选择的基类,Qt SDK内置,需要引入头文件QWidget。对于Qt的命名规则,使用Qt中内置的类,大部分情况下,包含的头文件的名字和类名一致。
Q_OBJECT是内置的宏,在使用Qt的信号和槽时需要用。
public中传的参数,parent是一个父节点。Qt对象创建时,需要把这个对象挂到对象树上,挂的时候需要指定父节点。对象树是一个N叉树。
最后的私有成员,和from file有关,UI。
4、查看代码 ---- widgt.cpp和widget.ui

ui_widget.h是form file被qmake生成的头文件。构造部分是把form file生成的界面和当前widget关联起来。
直接双击widget.ui文件,Qt Creator会调用Qt Designer打开ui文件,出现一个图形化界面编辑器,最左边也来到了设计,编辑那里也打开了这个文件。左边是Qt内置控件,中间是生成的界面。直接拖拽控件到中间就可以创建出具体的界面了。右边黄色的那一部分是控件属性栏。
点回编辑,查看ui文件。

ui文件的格式是xml格式。标签有些是Qt定义的,有些可以自定义。xml文件描述界面,qmake这些工具会依据xml文件生成对应的C++代码,就生成完整的界面了。
5、查看代码 ---- Empty.pro

.pro文件是Qt项目的工程文件,也是qmake等工具构建时的重要依据。
第一行是要引入的Qt模块,可修改。CONFIG += c++11可修改。
SOURCES到FORMS描述了当前项目参与构建的文件,不需要手动修改。
qmake搭配.pro文件和Linux的makefile作用类似。Qt Creator把这个过程中编译的细节都封装好,用户就不需要关心这些。
6、运行产生的中间文件
运行后,右击Empty.pro点击在Explorer中显示,打开一个文件夹。
它的上级目录:

build-Empty就是运行过程中生成的临时文件。里面有Makefile,Qt编译时的qmake等工具还是会用到Makefile。ui_widget.h则是widget.ui自动生成的文件。

Ui_Widget是Qt自动生成的,在widget.h中被使用:

widget.cpp中使用了setupUi方法:

setupUi进行界面创建操作,是依据xml文件生成的。
目录下的debug中的Empty.exe就是生成的可执行文件,运行后出现的界面。
结束。
相关文章:
Qt 5.14.2 学习记录 —— 일 新项目
文章目录 1、创建2、查看代码 ---- main.cpp3、查看代码 ---- widgt.h4、查看代码 ---- widgt.cpp和widget.ui5、查看代码 ---- Empty.pro6、运行产生的中间文件 1、创建 左上角的文件,新建文件或项目。如果要写一个GUI程序,应当选择Application&#x…...
uni-app:实现普通选择器,时间选择器,日期选择器,多列选择器
效果 选择前效果 1、时间选择器 2、日期选择器 3、普通选择器 4、多列选择器 选择后效果 代码 <template><!-- 时间选择器 --><view class"line"><view classitem1><view classleft>时间</view><view class"right&quo…...
Unity3D仿星露谷物语开发17之空库存栏UI
1、目标 将库存栏放在游戏界面中,一般情况下角色居中展示时库存栏在底部,当角色位于界面下方时库存栏展示在顶部避免遮挡。 2、CanvasGroup组件 用于集中控制UI元素的透明度、交互性和射线投射行为。CanvasGroup的Alpha属性允许渐变效果,I…...
QT------模型/视图
一、模型/视图结构概述 基本原理: Qt 的模型/视图(Model/View)架构将数据的存储和显示分离,提高了代码的可维护性和复用性。模型(Model):负责存储和管理数据,提供数据的访问接口&am…...
Git - 记录一次由于少输入了一个命令导致的更改丢失
Git - 记录一次由于少输入了一个参数导致的更改丢失 前言 某晚我激情开发了几个小时,中途没有进行commit存档。准备睡觉时,我想创建一个新的分支并将今晚所有更改提交到新分支上(似乎应该开发时候就创建?)。 然后因…...
nodeJS下npm和yarn的关系和区别详解
一、命令对应关系 1. 初始化项目 操作npm 命令Yarn 命令初始化项目npm inityarn init跳过提问快速初始化npm init -yyarn init -y 2. 安装依赖 操作npm 命令Yarn 命令安装项目所有依赖npm installyarn install添加依赖npm install <package-name>yarn add <package…...
党员学习交流平台
本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…...
HTML5 文件上传(File Upload)详解
HTML5 文件上传(File Upload)详解 HTML5 提供了强大的文件上传功能,允许用户通过网页选择文件并上传到服务器。以下是关于文件上传控件的详细说明。 1. 基本的文件上传控件 使用 <input> 标签的 type"file" 属性可以创建一…...
1.2.1-2部分数据结构的说明02_链表
(1)链表数据结构: 概念: 将列表中相互连接的节点不连续的存储在内存中。与数据不同,我们无法再恒定时间内访问任何元组,如果遍历所有则花费时间与元素总数n成正比。插入和删除1个元素的时间复杂度都是O(n…...
vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。
vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。 1.设计思路:2.设计细节3.详细代码实现 1.设计思路: 左侧button列表是要拖拽的组件。中间是拖拽后的流程图。右侧是拖拽后的数据列表。 我们拖动左侧组件放入中间的流…...
linux上使用cmake编译的方法
一、hello 例程仅基于一个cpp文件 C文件或工程进行编译时可以使用g指令(需要对每一个程序和源文件分别使用g指令编译),当程序变大时,一个工程文件往往会包含很文件夹和源文件,这时我们需要的编译指令将越来越长&#…...
如何实现el-select多选下拉框中嵌套复选框并加校验不为空功能呢?
如何实现el-select多选下拉框中嵌套复选框并加校验不为空功能呢? 要实现的效果图选择部分品牌但不选选项效果问题概述实现方案el-select组件与el-checkbox组件无缝衔接给form表单加自定义校验规则 要实现的效果图 选择部分品牌但不选选项效果 问题概述 相信大家看到…...
源码理解 UE4中的 FCookStatsManager::FAutoRegisterCallback RegisterCookStats
官方文档:https://dev.epicgames.com/documentation/zh-cn/unreal-engine/API/Runtime/Core/ProfilingDebugging/FCookStatsManager文档中的注释: When a cook a complete that is configured to use stats (ENABLE_COOK_STATS), it will broadcast this…...
Android 根据内存大小显示MTP模式连接PC时的名称
项目有两种内存,要求根据连接电脑拷贝文件时的盘符名称根据内存大小显示不同名称。 frameworks/base/media/java/android/mtp/MtpDatabase.java//mh import android.app.ActivityManager; ...-894,7 896,19 public class MtpDatabase implements AutoCloseable {p…...
不只是mini-react第一节:实现最简单mini-react
项目总结构: ├─ 📁core │ ├─ 📄React.js │ └─ 📄ReactDom.js ├─ 📁node_modules ├─ 📁tests │ └─ 📄createElement.spec.js ├─ 📄App.js ├─ 📄in…...
前端路由layout布局处理以及菜单交互(三)
上篇介绍了前端项目部署以及基本依赖的应用,这次主要对于路由以及布局进行模块化处理 一、 创建layout模块 1、新建src/layout/index.vue <template><el-container class"common-layout"><!-- <el-aside class"aside">&l…...
小结:DNS,HTTP,SMTP,IMAP,FTP,Telnet,TCP,ARP,ICMP
DNS(Domain Name System,域名系统) 是互联网的重要组成部分,它负责将人类易读的域名(如 www.google.com)转换为机器可以识别的 IP 地址(如 142.250.72.206)。这一过程被称为域名解析…...
【C++】P2550 [AHOI2001] 彩票摇奖
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述输入格式:输出格式:输入输出样例: 💯题解思路1. 问题解析 💯我的实现实现逻辑问题分析 💯老…...
并发服务器框架——zinx
zinx框架 Zinx 是一个用 Go 语言编写的高性能、轻量级的 TCP 服务器框架,它被设计为简单、快速且易于使用。Zinx 提供了一系列的功能,包括但不限于连接管理、数据编解码、业务处理、负载均衡等,适用于构建各种 TCP 网络服务,如游戏…...
Unity 中计算射线和平面相交距离的原理
有此方法 能够计算射线和平面是否相交以及射线起点到平面交点的距离 代码分析 var dot Vector3.Dot(ray.direction, plane.normal);计算射线和平面法线的点积,如果大于等于0,则说明射线和平面没有相交,否则,说明射线和平面相交…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
LangChain【6】之输出解析器:结构化LLM响应的关键工具
文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器?1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...
GB/T 43887-2024 核级柔性石墨板材检测
核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标: 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...
基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解
在我的上一篇博客:基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目,该项目展示了一个强大的框架,旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人,更是一个集…...
