初学Qt之环境安装与 hello word

news2024/11/27 16:38:09

环境:

Qt Creator 4.11.0 (Community)

Qt 5.14.0

目录

1.Qt环境配置

1.1 下载Qt 5.14.0

1.2 注册Qt账号

1.3 安装Qt 

1.4 配置环境变量

2.创建项目

2.1 创建一个项目

2.2 初始代码解析 

2.3 可视化GUI

​编辑 2.4 hello word

2.4.1 可视化hello word

2.4.2 代码hello word

2.5.3 内存泄露问题


1.Qt环境配置

1.1 下载Qt 5.14.0

        点击蓝色字体直接跳转

       ​​​​​​​Qt下载​​​​​​​

        在网站中下载我们合适的版本,我选择的是Qt 5.14.0

        下载速度较慢,大家可以翻墙下载,这个就不教学了。 

1.2 注册Qt账号

        Qt账号注册

        接下来在上面的网站中注册我们的账号,这个也不多教学了。

        值得注意的是,在邮箱确认中一定要注意各个选项,不然会导致账户锁定。

1.3 安装Qt 

        打开我们的安装程序

        关键的来了,接下来要设置我们的组件,这两个必须勾选 ,其他的根据需要即可。

 

 

        接下来根据步骤来就可以了 

1.4 配置环境变量

        在我们的安装目录下找到我们的 bin 路径并且配置到环境变量中

        教程如下图 

2.创建项目

2.1 创建一个项目

        进入我们的 Qt Creator 中后点击左上角文件创建一个新项目

        可以看见以下界面,我们这样选择。

         接下来设置我们的项目名和保存路经

         下个又页面我们选择 qmake 

 

 

        接下来,我们进入下个页面 ,Qt会自动帮我们生成一些内置的类

        这边推荐改成方便自己使用的名字

        这个 form 一定要勾选上,和可视化息息相关

        下个页面是为了国际化,我们不需要进行设置

         下面两个页面默认即可,初学者暂时不需要了解

2.2 初始代码解析 

        看一个项目当然先从main.cpp入手了。

        为了节省时间,我把代码注释好了,大家直接看即可。

// main.cpp

#include "mywidget.h"

#include <QApplication>

int main(int argc, char *argv[])  // main 形参就是命令行参数
{
    QApplication a(argc, argv);  // 编写Qt图形化界面一定要有QApplication对象
    myWidget w;        // 创建项目生成的类
    w.show();          // 创建一个控件对象显示出来 .hide方法就是隐藏
    return a.exec();   // 表示让程序执行起来
}

 

  

// mywidget.cpp

#include "mywidget.h"
#include "ui_mywidget.h"  // form file 被 qmmake 生成的头文件

#include <QLabel>

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::myWidget)
{  
    ui->setupUi(this);    // 把 form file 生成的界面和当前 widget 关联起来
    // VVV 通过代码来构造界面,通常会在 myWidget/MainWindow 的构造函数中 VVV

    // 在堆上创建
    QLabel* label = new QLabel(this);
    // 给当前这个对象,指定一个父对象  this指向main中的 Widget w;
    // QLabel label;  // 在栈上创建
    label->setText(QString("@Yubendan")); // 默认左上角
}

myWidget::~myWidget()
{
    delete ui;  // 释放
}

// mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class myWidget; }
QT_END_NAMESPACE

class myWidget : public QWidget  // 创建项目时选择的父类 包含 QWidget 头文件
{                                // Qt头文件和类名都是一致的
    Q_OBJECT                     // Qt内置的宏,本质上是文本替换

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

private:
    Ui::myWidget *ui;      // 和 form file 密切相关
};
#endif // MYWIDGET_H

 

2.3 可视化GUI

        双击这个文件

 2.4 hello word

2.4.1 可视化hello word

        这边我们使用 Label 来显示我们的文字 hello word

        直接拖拽过去,双击修改就可以了

2.4.2 代码hello word

        接下来,我们用代码实现,相信大家已经在上面的代码中看见了。

        相信学过cpp的都很容易理解这串代码。

        值得注意的是,由于早期的 C++ 中的 string 等容器并不好用。

        我们的 Qt 就内置了自己的 Qstring QList Qmap 等,来方便使用。

        当然也是兼容C++的。

        虽然现在C++已经很好用了,但这边还是推荐使用Qt内置的。

2.5.3 内存泄露问题

        大家看见我们上面的代码,是 new 了,但没有 delete 会不会出现内存泄露呢?

        很好,大家能想到这些,就已经是个合格的 C++ 使用者了。

        答案是不会

        label 对象会合适的时候被析构释放~~(虽然没有手动写 delete,确实能释放)之所以能够把对象

释放掉,主要是因为把这个对象是挂到了对象树上。

        

        所以,我们更推荐使用堆的方式来实现 。

        而在栈上创建会出现什么问题呢?看图

        最后再提一嘴

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

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

相关文章

探索光耦:光耦助力高速电吹风安全与性能的革命性提升

在消费者对家电产品智能化与安全性需求日益增长的今天&#xff0c;高速电吹风作为个人护理领域的明星产品&#xff0c;正经历着前所未有的技术创新。其中&#xff0c;光耦&#xff08;光电耦合器&#xff09;的引入&#xff0c;无疑为电吹风的性能优化与安全保障开辟了新路径。…

Java基础(下)

泛型 Java 泛型&#xff08;Generics&#xff09; 是 JDK 5 中引入的一个新特性。使用泛型参数&#xff0c;可以增强代码的可读性以及稳定性。 编译器可以对泛型参数进行检测&#xff0c;并且通过泛型参数可以指定传入的对象类型 ArrayList<Person> persons new Arra…

【linux】冯诺依曼架构

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.冯诺依曼体系结构02.操作系统&#xff08;Operator System&#xff09;如何理解“管理”操作系统中实现“管理的先描述再组织” 03.系统调用与库函数系统调用库函数 01.冯诺依…

SSM(5)(动态sql <if>、<where>、返回主键值)

返回主键值&#xff1a; 方法一&#xff1a; useGeneratedKeys 为ture 声明 返回主键 keyProperty 表示要返回的值 封装到对象的属性中 但是这一种方法不支持Orcal数据库。 <insert id"save2" parameterType"com.findyou.entity.User" useGenerated…

[软件工程]—TFTP协议简要解析

TFTP协议简要解析 1.TFTP基本概念 TFTP&#xff08;Trivial File Transfer Protocol&#xff09;&#xff1a;是一个很小且易于实现的文件传送协议&#xff1a; TFTP使用客户服务器方式和使用UDP数据包&#xff0c;因此TFTP需要有自己的差错改正机制。TFTP只支持文件传输而不…

基于STM32 ARM+FPGA+AD的电能质量分析仪方案设计(一)硬件设计

电能质量分析系统硬件设计 3.1 电能质量分析系统设计要求 本系统实现对电能质量的高精度测量&#xff0c;根据国家相关电能质量分析仪器规定 标准以及对市场电能质量分析仪的分析&#xff0c;指定以下设计目标。 &#xff08; 1 &#xff09;电能质量参数测量精度&#xf…

基于 Prometheus+Grafana+Alertmanager 搭建 K8S 云监控告警平台(附配置告警至QQ、钉钉)

文章目录 一、机器规划二、部署安装 node-exporter、prometheus、Grafana、kube-state-metrics1、创建 monitor-sa 命名空间2、安装node-exporter组件2.1、说明2.2、应用资源清单2.3、通过node-exporter采集数据 3、k8s 集群中部署 prometheus3.1、创建一个 sa 账号3.2、将 sa …

智谱开放平台API调用解析

一、什么是智谱AI 智谱AI成立于2019年&#xff0c;由‌清华大学计算机系知识工程实验室的技术成果转化而来&#xff0c;是一家致力于人工智能技术研发和应用的公司。智谱致力于打造新一代认知智能大模型&#xff0c;专注于做大模型的中国创新。 二、智谱开放平台API调用 官方文…

遍历有向图链路(DFS算法)- 优化版

在上一节基础上&#xff0c;去除了节点的pre集合&#xff0c;只保留节点next的结合&#xff0c;对数据模型进行了优化&#xff0c;实现思想做了优化。 有向图示例&#xff1a; 基本思路 构建有向图数据模型校验有向图不能出现回路&#xff0c;即当前节点不能出现在历史链路中首…

Java控制台实现《多线程模拟龟兔赛跑》(实现Runnale接口,重写run()方法)

&#xff08;温馨提示&#xff1a;本题最重要的是学习思路&#xff0c;代码还有待优化和改进&#xff01;&#xff09; 下一篇博客进行优化。实现Callable接口&#xff1a;V call() throws Exception 。可以返回结果&#xff0c;以及可以抛出异常。&#xff08;启动线程比较麻烦…

spingboot项目打包到docker镜像[保姆级教程]

目录 1. 项目准备 2. 项目打包测试 3. docker配置 3.1 服务器端配置 3.2 开发IDEA配置 3.3 创建dockerfile 写在前面: 这博客一晃鸽了好久了,其实不是没有创作,只是懒得写博客了.日常都记录在自己的语雀小本本上了.好久没有出保姆级教程了&#xff0c;这次忽然想通过ide…

IP地址类型选择指南:动态IP、静态IP还是数据中心IP?

你是否曾经困惑于如何选择最适合业务需求的IP地址类型&#xff1f;面对动态IP、静态IP和数据中心IP这三种选择&#xff0c;你是否了解它们各自对你的跨境在线业务可能产生的深远影响&#xff1f; 在跨境电商领域&#xff0c;选择合适的IP类型对于业务的成功至关重要。动态IP、…

UART在Linux内核启动时突然不打印的问题

国庆前一天收到的任务&#xff0c;在一颗比较成熟的芯片的SDK基础上&#xff0c;移植一个新内核&#xff0c;让它能够在bitfile下跑在FPGA上。 看了芯片设计那边给的文档&#xff0c;对比过去的那颗&#xff0c;感觉也就改改寄存器&#xff0c;中断号&#xff0c;时钟&#xff…

聚焦AI|智享AI直播三代模型的出现,打破传统直播束缚!

聚焦AI|智享AI直播三代模型的出现&#xff0c;打破传统直播束缚! 在数字化浪潮的推动下&#xff0c;直播行业正经历着前所未有的变革与升级。其中&#xff0c;智享AI直播三代模型的出现&#xff0c;无疑成为了业界关注的焦点。这一创新技术不仅引发了关于无人直播未来发展方向的…

18709 魔法

### 思路 为了将所有白色奶牛排在前面&#xff0c;黑色奶牛排在后面&#xff0c;我们可以考虑两种策略&#xff1a; 1. 将所有的奶牛都变成白色。 2. 将所有的奶牛都变成黑色。 我们需要计算这两种策略所需的最少次数&#xff0c;并选择其中较小的一个。 具体步骤如下&#x…

从加载到对话:使用 Llama-cpp-python 本地运行量化 LLM 大模型(GGUF)

&#xff08;无需显卡&#xff09;使用 Llama-cpp-python 在本地加载具有 70 亿参数的 LLM 大语言模型&#xff0c;通过这篇文章你将学会用代码创建属于自己的 GPT。 建议阅读完 19a 的「前言」和「模型下载」部分后再进行本文的阅读。 代码文件下载 - Llama-cpp-python 文章目…

AI智能体:共塑企业变革新纪元,引领未来无限潜能

当我们被《银翼杀手2049》或《机械公敌》等科幻大片中那些远超人类能力、能够自主判断并行动的人工智能所震撼时&#xff0c;AI时代的“智能体”已经悄然渗透进我们的工作生活中&#xff0c;成为引领企业变革的先锋力量&#xff0c;将我们带入一个全新的纪元。 ​从辅助到共生&…

【Unity】背景图片随着背景里面内容大小而变化

今天制作项目里面的设置界面和暂停界面时&#xff0c;发现两个界面有很多重复部分&#xff0c;所以直接做一个界面就行了&#xff0c;但是两个界面的背景大小会有变化&#xff0c;图片在下面 这个是游戏暂停界面的&#xff0c;设置界面和这个界面有很多重复地方&#xff0c;仅仅…

学习博客写作

欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持&#x…

安卓手机平板远程访问内网服务器中安装的code-server编程开发实战

文章目录 前言1.Ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 前言 本文主要介绍如何在Linux Ubuntu系统安装code-server&#xff0c;并结合cpolar内网穿透工具配置公网地址&#xff0c;轻松实现使用安…