Qt 5.14.2 学习记录 —— 일 新项目

news2025/1/8 4:04:15

文章目录

  • 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就是生成的可执行文件,运行后出现的界面。

结束。

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

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

相关文章

Spring MVC和servlet

1.Spring MVC是Spring框架的一个扩展 2.Spring MVC工作流程 1、用户发送请求至前端控制器DispatcherServlet。 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及…

蓝牙架构介绍

架构1:hostcontroller双芯片标准架构 这个标准把蓝牙协议栈分成host和controller两部分,其中host跑在AP上,controller跑在蓝牙模块上,两者之间通过HCI协议进行通信,AP芯片厂商一般会直接采用开源的Bluez来实现Host功能…

MySQL(二)MySQL DDL数据库定义语言

1. MySQL DDL数据库定义语言 1.1. MySQL定义语言 进入MySQL mysql -u root -p(回车后输入密码,即可进入mysq1)1.1.1. 数据库操作 (1)查看数据库 mysql>show databases;注:MySQL语句分隔符为“;”   mysql库很重要它里面有…

决定系数(R²分数)——评估回归模型性能的一个指标

目录 1.定义 2.计算举例 3. 结果分析 1.定义 R(R平方)分数,也称为决定系数,是用来评估回归模型性能的一个指标。它表示自变量解释因变量变异性的比例。R分数的取值范围通常在0到1之间,其值越接近1,说明…

node.js内置模块之---stream 模块

stream 模块的作用 在 Node.js 中,stream 模块是一个用于处理流(stream)的核心模块。流是一种处理数据的抽象方式,允许程序处理大量数据时不会一次性将所有数据加载到内存中,从而提高性能和内存效率。通过流&#xff0…

音视频入门基础:MPEG2-PS专题(5)——FFmpeg源码中,解析PS流中的PES流的实现

一、引言 从《音视频入门基础:MPEG2-PS专题(3)——MPEG2-PS格式简介》中可以知道,PS流由一个个pack(包装)组成。一个pack 一个pack_header 一个或多个PES_packet。pack_header中还可能存在system header…

ElasticSearch05-集群搭建

零、文章目录 ElasticSearch05-集群搭建 1、Windows集群 (1)安装节点 就是把下载的压缩包解压之后复制三个副本 (2)配置节点 每个文件夹的配置文件config/elasticsearch.yml修改如下node-01 配置如下 cluster.name: myclust…

【服务器项目部署】✈️将本地项目部署到服务器(二)!

目录 👋前言 👀一、功能调整 🌱二、服务部署 💞️三、代码调整 🍻四、章末 👋前言 小伙伴们大家好,上篇文章本地实践了如何将本地项目部署到服务器上,从服务器的选择、服务器环境…

挖掘建模之分类与预测

根据挖掘目标和数据形式可以建立分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等模型,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。 1.分类与预测 就餐饮企业而言,经常会碰到这样的问题: 1&…

安卓入门十三 常用功能模块一RxJava

响应式编程RxJava 响应式编程:使用RxJava库实现响应式编程范式,提供更简洁、易于维护的异步编程方式。 异步编程的简洁性:响应式编程提供了一种简洁、流畅的方式来处理异步任务。通过使用操作符和线程调度器,可以将异步操作串联…

【LeetCode】:最长乘积等价子数组【简单】

https://leetcode.cn/problems/maximum-subarray-with-equal-products/description/ 以下是解决这道题的详细思路: 一、理解题目要求 题目给定一个由正整数组成的数组 nums,需要找出其中最长的“乘积等价子数组”的长度。一个数组 arr 被称为“乘积等…

Android使用DataBinding和Merge引发的血案

Android使用DataBinding和Merge引发的血案 1.前言: 相信Databinding和Merge大家都不陌生,今天讲解的是Databinding和Merge一起使用遇到的问题,在父布局使用,引用的布局使用Merge会导致id找不到,运行时直接崩溃了&…

JS (node) 的 ACM 模式 + debug方法 (01背包为例)

文章目录 JS 的 ACM 模式输入处理 JS dubug (01背包为例)动态输入在本地通过 Node.js 运行和调试 硬编码 Hard CodingVS Code JS 的 ACM 模式 在 JavaScript 中,ACM 模式一般通过 Node.js 的 readline 模块实现。 输入处理 使用 readline 模块监听输入。 将每行输…

【MySQL 保姆级教学】用户管理和数据库权限(16)

数据库账户管理是指对数据库用户进行创建、修改和删除等操作,以控制用户对数据库的访问权限。通过账户管理,可以设置用户名、密码、主机地址等信息,确保数据库的安全性和可控性。例如,使用 CREATE USER 创建用户,ALTER…

HTML——56.表单发送

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>表单发送</title></head><body><!--注意&#xff1a;1.表单接收程序&#xff0c;放在服务器环境中(也就是这里的www文件目录中)2.表单发送地址&#x…

el-table行列转换简单版,仅限单行数据

原始数据格式如下&#xff0c;如果不是此格式&#xff0c;请转换成以下格式在进行以下操作 [{ label: name, value: Tom },{ label: age, value: 25 },{ label: country, value: UK } ]代码如下 <template><el-table :data"tableData" style"width: …

OpenGL材质系统和贴图纹理

上一篇文章当中笔者为大家介绍了风氏光照模型&#xff0c;相信大家也发现了光照着色器当中有设置有很多控制光照强度的参数&#xff0c;而所谓的材质系统就是我们可以人为的去调节这些参数&#xff0c;让一个物体的反光效果能够更加接近我们现实生活当中的一些物体。 材质系统…

【mybatis】Mybatis整体架构解析

从本篇开始我们开始学习mybatis的系列源码&#xff0c;主要的主题可能就是四个方面 从整体把握mybatis系统架构通过一个查询SQL 源码解析核心流程mybatis的缓存机制-源码级别mybatis的插件机制-源码级别spring是如何整合的mybatis框架的 1.整体架构 上述是mybatis的源码&…

stm32 智能语音电梯系统

做了个stm32智能语音控制的电梯模型&#xff0c;总结一下功能&#xff0c;源码用ST的HAL库写的&#xff0c;整体流程分明。 实物图 这个是整个板子的图片&#xff0c;逻辑其实并不复杂&#xff0c;只是功能比较多&#xff0c;在我看来都是一些冗余的功能&#xff0c;但也可能是…

Git 部署

参考&#xff1a;手把手教你入门Git — Git使用指南&#xff08;Linux&#xff09; 需要说明的是&#xff1a; 1、服务器linux系统中一般使用master分支&#xff0c;但github现在流行的是main分支&#xff1b; 解决方案是修改master分支位main分支 git branch -m master mai…