初学Qt之环境安装与 hello word

环境:

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_NAMESPACEclass 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.rhkb.cn/news/444205.html

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

相关文章

链式二叉树及二叉树各种接口的实现(C)

二叉树的性质 若规定根节点的层数为1&#xff0c;则一棵非空二叉树的第 i i i层上最多有 2 i − 1 2^{i-1} 2i−1个结点.若规定根节点的层数为1&#xff0c;则深度为h的二叉树的最大结点数是 2 h − 1 2^{h}-1 2h−1对任何一棵二叉树&#xff0c;如果度为0其叶结点个数为 n 0 …

Koa学习

Koa 安装与配置 1. 初始化项目 在终端中执行以下命令&#xff1a; # 创建项目文件夹 mkdir koa cd koa# 初始化并安装依赖 npm init -y npm install koa npm install nodemon --save-dev2. 修改 package.json 在 package.json 文件中进行如下修改&#xff1a; {"type…

C语言 | Leetcode C语言题解之第472题连接词

题目&#xff1a; 题解&#xff1a; typedef struct Trie {struct Trie * children[26];bool isEnd; }Trie;#define TRIE_INITIAL(node) do { \for (int i 0; i < 26; i) { \(node)->children[i] NULL; \} \(node)->isEnd false; \ }while(0);static void freeTri…

互联网线上融合上门洗衣洗鞋小程序,让洗衣洗鞋像点外卖一样简单

随着服务创新的风潮&#xff0c;众多商家已巧妙融入预约上门洗鞋新风尚&#xff0c;并携手洗鞋小程序&#xff0c;开辟线上蓝海。那么&#xff0c;这不仅仅是一个小程序&#xff0c;它究竟蕴含着哪些诱人好处呢&#xff1f; 1. 无缝融合&#xff0c;双线共赢&#xff1a;小程序…

美团Java一面

美团Java一面 9.24一面&#xff0c;已经寄了 收到的第一个面试&#xff0c;表现很不好 spring bean生命周期 作用域&#xff08;忘完了&#xff09; 为什么用redis缓存 redis和数据库的缓存一致性问题 redis集群下缓存更新不一致问题 aop说一下 arraylist和linkedlist 数据库的…

2024年软件设计师中级(软考中级)详细笔记【5】软件工程基础知识上(分值10+)

第5章软件工程 目录 前言第5章 软件工程基础知识&#xff08;上&#xff09;&#xff08;分值10&#xff09;5.1 软件工程概述5.1.4 软件过程 5.2 软件过程模型5.2.1 瀑布模型 (Waterfall Model)5.2.2 增量模型5.2.3 演化模型5.2.4 喷泉模型&#xff08;Water Fountain Model&a…

JavaScript下载文件(简单模式、跨域问题、文件压缩)

文章目录 简介简单文件下载通过模拟form表单提交通过XMLHttpRequest方式 跨域(oss)下载并压缩文件完整示例文件压缩跨域设置 简介 相信各位开发朋友都遇到过下载的文件的需求&#xff0c;有的非常简单&#xff0c;基本链接的形式就可以。 有的就比较复杂&#xff0c;涉及跨域…

小米路由器R3Gv2安装openwrt记录

前言 小米路由器R3Gv2的硬件配置与小米路由器4A千兆版一致&#xff0c;但bootloader有所不同&#xff0c;因此openwrt的固件不要互刷。另外&#xff0c;R3Gv2和R3G、4A百兆版是不同的设备&#xff0c;切勿混淆。 硬件信息 OpenWrt参数页-Xiaomi MiWiFi 3G v2 CPU&#xff1a…

PPT分享:埃森哲-业务流程BPM能力框架体系

PPT下载链接见文末~ 业务流程管理&#xff08;BPM, Business Process Management&#xff09;的能力框架体系是一个全面、系统的流程管理方法论和工具集&#xff0c;旨在帮助企业优化和持续改进其业务流程&#xff0c;从而提升运营效率和市场竞争力。 一、BPM能力框架体系概述…

CUDA Example 处理一张二维图像

CUDA 实战 5.3.3 基于共享内存的位图&#xff1a;突出了同步操作的重要性 __synthreads() 才能保证图像的正确输出&#xff0c;如果去掉同步操作&#xff0c;输出图像如下&#xff1a; 加上同步操作之后&#xff1a; #include "cpu_bitmap.h" #include "cpu_an…

小北的技术博客:探索华为昇腾CANN训练营与AI技术创新——Ascend C算子开发能力认证考试(初级)

前言 哈喽哈喽友友们,这里是zyll~(小北)智慧龙阁的创始人及核心技术开发者。在技术的广阔天地里,我专注于大数据与全栈开发,并致力于成为这一领域的新锐力量。通过智慧龙阁这个平台,我期望能与大家分享我的技术心得,共同探索技术的无限可能。 Ascend C编程:小北的技术…

SKG未来健康校招社招入职测评:综合能力及性格问卷SHL测评题库

SKG未来健康科技股份有限公司在校招和社招过程中使用的SHL测评题库主要考察应聘者的综合能力和性格特征。以下是对这些测评的简要分析&#xff1a; 综合能力测评&#xff1a; 测评时间&#xff1a;46分钟&#xff08;实际答题时间36分钟&#xff09; 题目数量&#xff1a;30题…

【操作系统】深入探索:操作系统内核与用户进程的数据交互艺术

目录 一、数据从内核缓冲区拷贝到用户进程缓冲区&#xff0c;是谁来负责拷贝的&#xff0c;是操作系统还是用户进程&#xff1f;实际的执行者到底是谁&#xff1f;二、系统调用以及用户态内核态的相互转换1、系统调用2、用户态内核态的相互转换 三、如何形象的理解linux的虚拟地…

Django学习笔记十三:优秀案例学习

Django CMS 是一个基于 Django 框架的开源内容管理系统&#xff0c;它允许开发者轻松地创建和管理网站内容。Django CMS 提供了一个易于使用的界面来实现动态网站的快速开发&#xff0c;并且具有丰富的内容管理功能和多种插件扩展。以下是 Django CMS 的一些核心特性和如何开始…

Vue 脚手架学习

1.使用 Vue 脚手架 1.1 初始化脚手架 1.1.1 具体步骤 第一步&#xff08;仅第一次执行&#xff09;&#xff1a;全局安装vue/cli。 npm install -g vue/cli 第二步&#xff1a;切换到你要创建项目的目录&#xff0c;然后使用命令创建项目 vue create xxxx 第三步&#xff1a;启…

【CSS Tricks】鼠标滚轮驱动css动画播放,使用js还是css?

目录 引言一、js实现1. 实现思路2. 实现案例3. 看下效果 二、css实现1. 代码修改2. 属性介绍2.1 看下浏览器支持性2.2 常用属性值2.2.1 scroll&#xff08;&#xff09;2.2.2 view&#xff08;&#xff09; 三、总结 引言 本篇为css的一个小技巧 页面中的动画效果随着滚轮的转动…

React技术在Meta Connect 2024大会

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

架构与思维:漫谈高并发业务的CAS及ABA

1 高并发场景下的难题 1.1 典型支付场景 这是最经典的场景。支付过程&#xff0c;要先查询买家的账户余额&#xff0c;然后计算商品价格&#xff0c;最后对买家进行进行扣款&#xff0c;像这类的分布式操作&#xff0c;如果是并发量低的情况下完全没有问题的&#xff0c;但如果…

其他:python语言绘制案例

文章目录 介绍导入python包图1图2 介绍 python语言的科研绘图合集&#xff0c;数据来源Hydrogen-diffusion-and-water-rock-reaction 导入python包 import pandas as pd import glob import proplot as pplt import seaborn as sns import numpy as np import matplotlib.py…

基于 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 …