当前位置: 首页 > news >正文

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、目标 将库存栏放在游戏界面中&#xff0c;一般情况下角色居中展示时库存栏在底部&#xff0c;当角色位于界面下方时库存栏展示在顶部避免遮挡。 2、CanvasGroup组件 用于集中控制UI元素的透明度、交互性和射线投射行为。CanvasGroup的Alpha属性允许渐变效果&#xff0c;I…...

QT------模型/视图

一、模型/视图结构概述 基本原理&#xff1a; Qt 的模型/视图&#xff08;Model/View&#xff09;架构将数据的存储和显示分离&#xff0c;提高了代码的可维护性和复用性。模型&#xff08;Model&#xff09;&#xff1a;负责存储和管理数据&#xff0c;提供数据的访问接口&am…...

Git - 记录一次由于少输入了一个命令导致的更改丢失

Git - 记录一次由于少输入了一个参数导致的更改丢失 前言 某晚我激情开发了几个小时&#xff0c;中途没有进行commit存档。准备睡觉时&#xff0c;我想创建一个新的分支并将今晚所有更改提交到新分支上&#xff08;似乎应该开发时候就创建&#xff1f;&#xff09;。 然后因…...

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…...

党员学习交流平台

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端&#xff1a;Java、JavaWeb / Springboot。前端&#xff1a;Vue、HTML / CSS / Javascript 等。数据库&#xff1a;MySQL 二、相关软件&#xff08;列出的软件其一均可运行&#xff09; I…...

HTML5 文件上传(File Upload)详解

HTML5 文件上传&#xff08;File Upload&#xff09;详解 HTML5 提供了强大的文件上传功能&#xff0c;允许用户通过网页选择文件并上传到服务器。以下是关于文件上传控件的详细说明。 1. 基本的文件上传控件 使用 <input> 标签的 type"file" 属性可以创建一…...

1.2.1-2部分数据结构的说明02_链表

&#xff08;1&#xff09;链表数据结构&#xff1a; 概念&#xff1a; 将列表中相互连接的节点不连续的存储在内存中。与数据不同&#xff0c;我们无法再恒定时间内访问任何元组&#xff0c;如果遍历所有则花费时间与元素总数n成正比。插入和删除1个元素的时间复杂度都是O(n…...

vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。

vue elementUI Plus实现拖拽流程图&#xff0c;不引入插件&#xff0c;纯手写实现。 1.设计思路&#xff1a;2.设计细节3.详细代码实现 1.设计思路&#xff1a; 左侧button列表是要拖拽的组件。中间是拖拽后的流程图。右侧是拖拽后的数据列表。 我们拖动左侧组件放入中间的流…...

linux上使用cmake编译的方法

一、hello 例程仅基于一个cpp文件 C文件或工程进行编译时可以使用g指令&#xff08;需要对每一个程序和源文件分别使用g指令编译&#xff09;&#xff0c;当程序变大时&#xff0c;一个工程文件往往会包含很文件夹和源文件&#xff0c;这时我们需要的编译指令将越来越长&#…...

如何实现el-select多选下拉框中嵌套复选框并加校验不为空功能呢?

如何实现el-select多选下拉框中嵌套复选框并加校验不为空功能呢&#xff1f; 要实现的效果图选择部分品牌但不选选项效果问题概述实现方案el-select组件与el-checkbox组件无缝衔接给form表单加自定义校验规则 要实现的效果图 选择部分品牌但不选选项效果 问题概述 相信大家看到…...

源码理解 UE4中的 FCookStatsManager::FAutoRegisterCallback RegisterCookStats

官方文档&#xff1a;https://dev.epicgames.com/documentation/zh-cn/unreal-engine/API/Runtime/Core/ProfilingDebugging/FCookStatsManager文档中的注释&#xff1a; When a cook a complete that is configured to use stats (ENABLE_COOK_STATS), it will broadcast this…...

Android 根据内存大小显示MTP模式连接PC时的名称

项目有两种内存&#xff0c;要求根据连接电脑拷贝文件时的盘符名称根据内存大小显示不同名称。 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

项目总结构&#xff1a; ├─ &#x1f4c1;core │ ├─ &#x1f4c4;React.js │ └─ &#x1f4c4;ReactDom.js ├─ &#x1f4c1;node_modules ├─ &#x1f4c1;tests │ └─ &#x1f4c4;createElement.spec.js ├─ &#x1f4c4;App.js ├─ &#x1f4c4;in…...

前端路由layout布局处理以及菜单交互(三)

上篇介绍了前端项目部署以及基本依赖的应用&#xff0c;这次主要对于路由以及布局进行模块化处理 一、 创建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&#xff08;Domain Name System&#xff0c;域名系统&#xff09; 是互联网的重要组成部分&#xff0c;它负责将人类易读的域名&#xff08;如 www.google.com&#xff09;转换为机器可以识别的 IP 地址&#xff08;如 142.250.72.206&#xff09;。这一过程被称为域名解析…...

【C++】P2550 [AHOI2001] 彩票摇奖

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式&#xff1a;输出格式&#xff1a;输入输出样例&#xff1a; &#x1f4af;题解思路1. 问题解析 &#x1f4af;我的实现实现逻辑问题分析 &#x1f4af;老…...

并发服务器框架——zinx

zinx框架 Zinx 是一个用 Go 语言编写的高性能、轻量级的 TCP 服务器框架&#xff0c;它被设计为简单、快速且易于使用。Zinx 提供了一系列的功能&#xff0c;包括但不限于连接管理、数据编解码、业务处理、负载均衡等&#xff0c;适用于构建各种 TCP 网络服务&#xff0c;如游戏…...

Unity 中计算射线和平面相交距离的原理

有此方法 能够计算射线和平面是否相交以及射线起点到平面交点的距离 代码分析 var dot Vector3.Dot(ray.direction, plane.normal);计算射线和平面法线的点积&#xff0c;如果大于等于0&#xff0c;则说明射线和平面没有相交&#xff0c;否则&#xff0c;说明射线和平面相交…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解

文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...

Netty自定义协议解析

目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...