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

【Qt秘籍】[005]-Qt的首次邂逅-创建

一、如何创建文件?

        当我们打开Qt Creator,你会发现整个界面类目繁多。现在,让我们直接开始新建一个项目。

1.点击左上角的“文件”==>点击“新建文件或项目”

2.如图,选择“Application”==>“Qt Wifgets application”==> “Choose...”


3.如图,选择填写名称和路径,点击下一步

【可以点击设为默认的项目路径

注意:路径中请勿使用中文,因为可能会导致后续的报错!

        

Qt的构建我该选什么?

在Qt中构建有三种选择,即:qmake、CMake、Qbs,接下来我们将逐一介绍。


qmake

        qmake是一种用于自动创建makefile的构建工具。Qmake支持跨平台施工。Qmake编辑带有后缀的文件。赞成的意见。


CMake

        CMake是一个跨平台的构建工具。CMake本身不是一个编译器,而是一个允许编译器理解编译过程的工具。让CMake采取行动来构建系统,例如Makefiles和Visual Studio项目文件。CMake是第三个具有大量文件的工具。


Qbs

        Qbs(QtbuildSuite:QtbuildSuite)与qmake相同,CMake工具都是构建工具。Qbs被称为下一代构建工具,具有更快的qmake编译速度。Qbs没有绑定到Qt版本,它根据项目的高级项描述生成正确的依赖关系表。创建传统的MakeFile工具,如qmake和CMake,在创建MakeFile工具后,将实际命令交给Make工具执行。


Qt官方声明:由于市场原因,Qbs已被弃用。对于Qt用户来说,Qmake是目前使用最广泛的构建工具,CMake位居第二。 

4.综上所述,如图,选择“qmake”

 Qt基类的关系是什么?

QWidget

        QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。

QMainWindow

        QMainWindow类提供一个有菜单条锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。你也可以使用Qt设计器来创建主窗口。

QDialog

        QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模式的也可以是非模式的。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。

三者关系图

 我们只需要使用Qwidget即可。

5.如图,选择“QWidget”然后点击下一步。

 注意:类名和文件名最好有关联性!以便于后续的代码编写。

Translation File是什么?

        选择翻译文件对应的语言,使得软件国际化若是以日常学习为用途,此处直接忽略。

6.如图,直接点击下一步。

7.如图,直接点击下一步。

8.如图,直接点击完成。

注意:如果想把代码提交到码云或者github,可以在此处选择git作为版本控制系统。

         通过上述8个步骤,终于完成了项目的创建。虽然看似复杂,但是当你熟练操作后,一套流程绝对行云流水,不到十秒即可创建完成!

二、程序的运行及代码解释

1.main.cpp

使用QtCreator创建任何新进程后,main.cpp文件将自动生成以下代码:

main.cpp

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

直接点击运行即可。 

运行后出现了一个矩形的空白窗口。 


1.Qt系统提供的标准类名头没有。h后缀


2.每个Qt类对应一个表头,类名为表头名称


3.QAapplication是一个应用程序类;Q应用程序a(a是应用程序对象,只有一个。)
⚫ QAapplication管理图形应用程序的控制流和主要设置。
⚫ QAapplication是Qt整个后端管理的生命线。它包含主事件循环,其中窗口系统和其他系统来自
所有事件处理和资源调度。它还处理应用程序的初始化和终止,并提供对话管理。
⚫对于任何使用Qt的图形应用程序,无论是否使用,都只存在一个QAApplication对象
此应用程序是否同时具有0、1、2或多个窗口。


4.myWidgetw//实例化窗口对象


5.w.show()//调用show函数显示窗口


6.a.exec():程序进入一个消息循环,等待对输入消息的响应。这里main()将控制权转移到Qt,Qt完成作为一个事件处理操作,exec()的值将在应用程序退出时返回。在exec()中,Qt接受并处理数据传达系统事件并将其传递给相应的窗口组件。

2.widget.h

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};
#endif // WIDGET_H

前两行代码保证头文件仅仅包含一次

//前两行代码保证头文件仅仅包含一次
#ifndef WIDGET_H
#define WIDGET_H
//等同于下列写法
#pragma once

 创建项目时,选择的父类,并且要包含头文件

#include <QWidget>//包含头文件,和类名一致class Widget : public QWidget    //创建项目时,选择的父类
{}

 Q_OBJECT是Qt内置的宏,展开后会生成大量代码

Q_OBJECT

 构造函数和析构函数(Qt引入“对象树”机制)

public:Widget(QWidget *parent = nullptr);~Widget();

和form file密切相关

private:Ui::Widget *ui;

 3.widget.cpp

 widget.cpp

#include "widget.h"    //创建生成的头文件
#include "ui_widget.h"    //form file被qmake生成的头文件Widget::Widget(QWidget *parent)    //构造函数: QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);    //把form file生成的界面和当前widget关联起来
}Widget::~Widget()    //析构函数
{delete ui;
}

4.form file -- widget.ui

双击后会调用 Qt Designer 打开ui文件,即为图形化的界面编辑器

左侧栏都是Qt中内置的控件。

如果我们拖拽左侧的控件到程序窗口中,就可以创建出具体的界面了。

右侧是编辑属性。

每个控件都有其独特的属性,影响到控件的行为。

点击点击左上角的编辑,就会显示ui文件的本体。

 这个格式实际上就是xml格式。类似于html,他们都是使用成对的标签表示数据。

笔者碎碎念: 虽然新建文件可能对你都是一个不小的挑战,不过好在你坚持了下来。下面的内容相信对你来说也是小菜一碟!

相关文章:

【Qt秘籍】[005]-Qt的首次邂逅-创建

一、如何创建文件&#xff1f; 当我们打开Qt Creator&#xff0c;你会发现整个界面类目繁多。现在&#xff0c;让我们直接开始新建一个项目。 1.点击左上角的“文件”>点击“新建文件或项目” 2.如图&#xff0c;选择“Application”>“Qt Wifgets application”> “…...

亚信安慧AntDB:值得信任的数据产品

AntDB的一个显著特点是其高度的容错性和可靠性。AntDB采用了先进的冗余和备份机制&#xff0c;确保在面对硬件故障或系统异常时仍能保持数据的完整性和可用性。这种稳定性不仅为运营商的核心业务提供了持久的保障&#xff0c;也提升了用户的信任和满意度。 AntDB的容错性和可靠…...

超越传统AI 新型多智能体系统MESA,探索效率大幅提升

探索多智能体强化学习的协同元探索 —— MESA 算法深度解读在多智能体强化学习&#xff08;MARL&#xff09;的征途中&#xff0c;如何高效探索以发现最优策略一直是研究者们面临的挑战。特别是在稀疏奖励的环境中&#xff0c;这一问题变得更加棘手。《MESA: Cooperative Meta-…...

[SWPU 2019]神奇的二维码、buuctf部分web题

目录 [SWPU 2019]神奇的二维码 [LitCTF 2023]Http pro max plus [SWPUCTF 2021 新生赛]finalrce ​[鹏城杯 2022]简单包含 [SWPUCTF 2022 新生赛]ez_ez_php(revenge) [GKCTF 2020]cve版签到 cve-2020-7066&#xff1a; [SWPU 2019]神奇的二维码 解码看看&#xff0c;是…...

Python正则表达式匹配中文:深入解析与实战应用

Python正则表达式匹配中文&#xff1a;深入解析与实战应用 在Python编程中&#xff0c;正则表达式是一种强大的工具&#xff0c;它可以用来处理和分析字符串数据。对于需要处理包含中文字符的文本数据的场景&#xff0c;掌握如何使用正则表达式匹配中文就显得尤为重要。本文将…...

实例Python对比两个word文档并找出不同

首先确保已经有了安装包docx 与 difflib&#xff0c;如果没有先用pip命令安装如下 pip install python-docx案例代码 import docx import difflib import os 在文件目录中存在两个待对比的word文档,必须是docx格式 # 获取文档对象 # path input(请输入文件目录&#xff1a;…...

2.1 QT随手简记(三)

新建QT工程 1.方法 第一种&#xff1a;点击new project按钮&#xff0c;弹出对话框&#xff0c;新建即可 第二种&#xff1b;点击文件菜单&#xff0c;选择新建文件或者工程 2.QT工程文件介绍 (1).pro文件 --》QT工程配置文件 QT …...

TechM-技术网站

介绍 你将为⼀个技术社区设计并实现⼀个官⽹。该社区旨在为软件⼯程师、开发⼈员和技术 爱好者提供⼀个交流平台&#xff0c;分享最新的技术动态、⽂章、项⽬案例。 项目模块 项目分为三个模块 &#xff1a; 主页展示模块&#xff0c;文章详情模块&#xff0c;文章专栏模块…...

SpringBoot: 使用GraalVM编译native应用

曾今Go语言里让我最艳羡的两个特性&#xff0c;一个是Goroutine&#xff0c;一个是native编译。 Java 21的虚线程实现了类似Goroutine的能力。Spring Boot 3.x开始提供了GraalVM的支持&#xff0c;现在Spring Boot也能打包成native文件了。 这一篇文章的目标是用一个案例讲解如…...

9. MySQL事务、字符集

文章目录 【 1. 事务 Transaction 】1.1 事务的基本原理1.2 MySQL 执行事务的语法和流程1.2.1 开始事务1.2.2 提交事务1.2.3 回滚&#xff08;撤销&#xff09;事务实例1&#xff1a;一致性实例2&#xff1a;原子性 【 2. 字符集 和 校对规则 】2.1 基本原理2.2 查看字符集查看…...

为什么要学习数据结构和算法

前言 控制专业转码学习记录&#xff0c;本科没学过这门课&#xff0c;但是要从事软件行业通过相关面试笔试基础还是要打牢固的&#xff0c;所以通过写博客记录一下。 必要性 1.越是厉害的公司&#xff0c;越是注重考察数据结构与算法这类基础知识 2.作为业务开发&#xff0c…...

CANoe仿真工程Switch控件关联dbc信号出现的问题及解决思路

小白学习CANoe仿真&#xff0c;参考CANoe-第2个仿真工程-XVehicle—1总线数据库设计&#xff08;思路&#xff09;_canoe vehicle-CSDN博客 CANoe-第2个仿真工程-XVehicle1总线数据库设计&#xff08;操作&#xff09;_canoe factor 参数什么意思-CSDN博客CANoe-第2个仿真工程…...

用开源模型MusicGen制作六一儿童节专属音乐

使用的是开源模型MusicGen&#xff0c;它可以根据文字描述或者已有旋律生成高质量的音乐(32kHz)&#xff0c;其原理是通过生成Encodec token然后再解码为音频&#xff0c;模型利用EnCodec神经音频编解码器来从原始波形中学习离散音频token。EnCodec将音频信号映射到一个或多个并…...

Ps:批处理

Ps菜单&#xff1a;文件/自动/批处理 Automate/Batch 批处理 Batch命令可以对一个文件夹中的文件执行事先创建的动作 Actions&#xff0c;从而快速地完成大量的重复性操作&#xff0c;提升工作效率。 提示 1&#xff1a; 可以从 Adobe Bridge 中调用 Photoshop 的批处理命令。 …...

前端框架中的虚拟DOM和实际DOM之间的关系

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端框架中的虚拟DOM和实际DOM之间的关系1. 实际DOM&#xff08;Real DOM&#xff09;1.1 定义1.2 特点 2. 虚拟DOM&#xff08;Virtual DOM&#xff09;2.1 定义2.2 特点 3. 虚拟DOM的工作流程3.1 创建虚拟DOM3.2 比较虚拟DOM&…...

MySQL进阶——SQL性能分析

在上篇文章我们学习了MySQL进阶——存储引擎&#xff0c;这篇文章学习MySQL进阶——SQL性能分析。 SQL性能分析主要是从SQL语句执行频率、耗时时间、CPU使用情况和执行时表连接情况进行分析&#xff0c;常用的方法工具有&#xff1a;SQL执行频率、慢查询日志、profile详情和ex…...

在RT-Thread下为MPU手搓以太网MAC驱动-4

文章目录 MAC驱动里面对MDIO的支持MAC驱动与MDIO总线 这是个人驱动开发过程中做的一些记录&#xff0c;仅代表个人意见和理解&#xff0c;不喜勿喷 MAC驱动需要支持不同的PHY芯片 MAC驱动里面对MDIO的支持 在第一篇文章中提到对MAC设备做出了抽象&#xff0c;其中MAC抽象里面有…...

可的哥(Codigger)推出Monaco编辑器插件,提升编程体验

Monaco编辑器&#xff0c;作为业界领先的代码编辑器&#xff0c;在编程体验中发挥着不可或缺的重要作用&#xff0c;能够在多种编程语言和开发环境中表现出色&#xff0c;为开发者提供高效、便捷的编程环境。可的哥&#xff08;Codigger&#xff09;在应用商店上线Monaco编辑器…...

为什么选择mobx

对于React而言&#xff0c;大家熟能而详的是redux&#xff0c;但我们的项目用的是mobx&#xff0c;接下来就让我给你详细说下它的优势和不足&#xff0c;可以参考。 MobX是什么&#xff1f; MobX 是一种简单易用的状态管理库&#xff0c;它采用基于观察者的模式&#xff0c;可…...

如何解决段转储问题

非常恶心 &#xff0c;这个问题困了我一个月&#xff0c;怀疑过代码有问题 &#xff0c;怀疑过数据集没处理好&#xff0c;怀疑过环境没有配置好&#xff0c;尝试改动&#xff0c;跑过很多次&#xff0c;还是段转储报错卡住。。。 然后一个月荒废&#xff0c;打算放弃这个模型…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...