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

结束。

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

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

相关文章

linux wsl配置 redis远程连接

✅ 1. 修改 Redis 配置文件 在 WSL 的 Redis 配置文件中,找到 redis.conf 或 /etc/redis/redis.conf 文件,编辑以下配置项: ➡️ 更新 bind 配置项 将 bind 127.0.0.1 ::1 修改为: bind 0.0.0.0这样,Redis 将监听所…

Transformer从零详细解读——DASOU讲AI

1. 从全局角度概括Transformer transformer的任务是什么? 进一步细化 进一步细化,注意:每个encoder结构相同,参数不同;decoder同理 原论文中的图如下: 2.Encoder 2.1 输入部分 (1&#xff09…

ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代

2024年11月30日,ARM正式发布了其最新的Armv9.5架构,这是Arm技术发展的又一重要里程碑。从表中信息来看,Armv9.5架构的发布标志着该公司的架构系列在性能、灵活性和可扩展性方面取得了进一步突破。本次发布不仅是技术上的提升,更是…

【Python运维】使用Python与Docker进行高效的容器化应用管理

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着容器化技术的广泛应用,Docker已成为现代软件开发与运维中不可或缺的工具。Docker容器提供了一种轻量级、可移植的方式来部署和管理应用…

分布式系统架构6:链路追踪

这是小卷对分布式系统架构学习的第6篇文章,关于链路追踪,之前写过traceId的相关内容:https://juejin.cn/post/7135611432808218661,不过之前写的太浅了,且不成系统,只是简单的理解,今天来捋一下…

Ubuntu 20.04安装gcc

一、安装GCC 1.更新包列表 user596785154:~$ sudo apt update2.安装gcc user596785154:~$ sudo apt install gcc3.验证安装 user596785154:~$ gcc --version二 编译C文件 1.新建workspace文件夹 user596785154:~$ mkdir workspace2.进入workspace文件夹 user596785154:~…

问题:Flask应用中的用户会话(Session)管理失效

我来分享一个常见的PythonWeb开发问题: 问题:Flask应用中的用户会话(Session)管理失效 这是一个在Flask开发中经常遇到的问题。当用户登录后,有时会话会意外失效,导致用户需要重复登录。 解决方案: 1. 首先&#x…

ansible-性能优化

一. 简述: 搞过运维自动化工具的人,肯定会发现很多运维伙伴们经常用saltstack和ansible做比较,单从执行效率上来说,ansible确实比不上saltstack(ansible使用的是ssh,salt使用的是zeromq消息队列[暂没深入了解]),但其实…

.net core 线程锁,互斥锁,自旋锁,混合锁

线程锁、互斥锁、自旋锁和混合锁是多线程编程中的重要概念,它们用于控制对共享资源的访问,避免数据竞争和不一致性。每种锁有其特定的适用场景和特点。我们来逐一解释它们,并进行比较。 1. 线程锁(Thread Lock) 线程…

【ArcGISPro/GeoScenePro】检查并处理高程数据

数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 数字高程模型 (DEM) 是一种栅格,可显示地面或地形的高程。 数字表面模型 (DSM) 是另一种高程栅格,可显示表面的高度,例如建筑物或树冠的顶部。 您需要准备 DEM 和 DSM 以供分析…

【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 一、不同访问属性成员的访问方式 1. public成员 2. private成员 3. protected成员 二、观察构造函数和析构函数的执行过程 1. 构造函数 2. 析构函数 三、学习类的组合使用方法 1. 类的组合概念 2. 实现示例 实验步骤 测试说明 …

xilinx的高速接口构成原理和连接结构及ibert工具的使用-以k7 GTX为例

一、相关简介 Xilinx的高速接口称之为transceivers(高速收发器),这部分的电路是专用电路,供电等都是独立的,根据速率可以分为GTP/GTX/GTH/GTY/GTM等。 Xilinx的高速接口是QUAD为单位的,没一个QUAD由一个时钟COMMON资…

创建型模式4.原型模式

创建型模式 工厂方法模式(Factory Method Pattern)抽象工厂模式(Abstract Factory Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)单例模式(Singleto…

python学opencv|读取图像(二十七)使用time()绘制弹球动画

【1】引言 前序已经学习了pythonopencv画线段、圆形、矩形、多边形和文字的相关操作,具体文章链接包括且不限于: python学opencv|读取图像(十八)使用cv2.line创造线段_cv2. 画线段-CSDN博客 python学opencv|读取图像&#xff0…

rabbitmq——岁月云实战笔记

1 rabbitmq设计 生产者并不是直接将消息投递到queue,而是发送给exchange,由exchange根据type的规则来选定投递的queue,这样消息设计在生产者和消费者就实现解耦。 rabbitmq会给没有type预定义一些exchage,而实际我们却应该使用自己…

2.系统学习-逻辑回归

逻辑回归 前言最大似然估计概率似然函数(likelihood function)最大似然估计 逻辑回归逻辑回归的似然函数与梯度 分类问题常用评价指标项目案例拓展内容作业 前言 逻辑回归与线性回归均属于广义线性模型,区别在于线性回归用于解决回归问题,例如身高、销量…

记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)

文章目录 0、总结1、背景2、端倪3、有个微软的系统更新,就想着更新看看(能否冲掉问题)4、更新没成功,自动重启电脑5、风险文件(好家伙命名还挺规范,一看名字就知道出问题了)6、开机有一些注册表…

行为树详解(6)——黑板模式

【动作节点数据共享】 行为树中需要的参数可以来自游戏中的各个模块,如果仅需从多个模块获取少量参数,那么可以直接在代码中调用其他模块的单例继而层层调用获取数据。 如果获取的参数量很大,从架构上看,我们需要通过加一个中间…

阿里云 人工智能与机器学习

阿里云的 人工智能(AI)与机器学习(ML) 服务为企业提供了全面的AI解决方案,帮助用户在多个行业实现数据智能化,提升决策效率,推动业务创新。阿里云通过先进的技术和丰富的工具,支持用…

如果Adobe 退出中国后怎么办

最近听说Adobe要退出中国了?那咱们的设计师们可得好好想想怎么搞到正版软件了。别急,今天教大家一个超酷的福利——Edu邮箱! Edu邮箱是什么?有什么好处? Edu邮箱就是学校给学生和老师们发的邮箱,一般结尾是.edu。有了…