[QT]QT入门的项目创建和项目代码的介绍

在学完c++之后QT 是我们一个非常好的练习c++语法的东西。

QT环境的下载:

官方网站:官方网站请点击

清华镜像网站:https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/

官方网站不一定能加载进去。

具体的安装方法链接:https://www.bilibili.com/video/BV12MwXzyEFp?p=2&vd_source=c7b9d9b9a3363ad5eed2bfcc1ef18343

项目的创建:

我们进入QT的环境,点击文件。再点击新建文件

我们可以看到我下面图片如果使用QT写一个GUI的程序就选择这个。

我们还能发现下面的QT不仅仅支持C++, 还支持Java , py...

设置名称和路径:然后点击下一步

下图出现三种的创建风格:

qmake:是老牌的QT工具了。

Cmake:这不i是QT的专属现在很多的开源项目都在使用了。

Qbs:新一代的 QT工具。

构建系统QT写的程序, 会涉及到一些元编程的技术"通过代码来生成代码"

这里我们选择qmake

使用QT creator创建项目,会自动的生成一些代码出来。 生成的代码就包含一个类此处"QMainWindow"就是要自动的选择生成这个父类是谁

我们初学者要选则:

后续一直下一步就可以了。

项目代码的介绍:

第一个文件: main.cpp

复制代码
#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])//main的命令行参数
{
    QApplication a(argc, argv);//编写一个QT的图形化界面的程序,一定要有个Qapplication对象
    Widget w;//刚才填写的项目生成队形的类名
    w.show();//看名字是让控件显示出来同理.hide: 让控件隐藏起来
//wight的父类是QWIght很多的方法都是在父类中继承下来的。
    return a.exec();//exec表示让程序执行起来
}

第二个文件: widget.h

复制代码
#ifndef WIDGET_H
#define WIDGET_H   //条件编译要求头文件只被包含一次 现在建议写#progma once 

#include <QWidget> //对应父节点的头文件

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; } //命名空间封装一下widget这个类
QT_END_NAMESPACE

class Widget : public QWidget //更形象的说明了Widget是继承QWidget这个类的
{
    Q_OBJECT //宏 信号和槽才会具体的使用

public:
    Widget(QWidget *parent = nullptr); //构造, 看数据类型他有关对象树的概念
    ~Widget(); //析构

private:
    Ui::Widget *ui; //与form file有关
};
#endif // WIDGET_H

第三个文件: widget.cpp

cpp 复制代码
#include "widget.h" // 创建项目时生成的头文件
#include "ui_widget.h" // form file生成的头文件

Widget::Widget(QWidget *parent) // 对内部的资源的一些初始化
    : QWidget(parent)
    , ui(new Ui::Widget)   //把form file生成的界面和当前的widget关联起来
{
    ui->setupUi(this);
}

Widget::~Widget()// 析构掉我所new出来的ui文件
{
    delete ui;
}

当然我们前面有几处说到了form file那现在我们就浅谈form file

form file的解释:

浅谈form file 我们在form下面有一个ui文件,这个文件是作什么的呢: 我们双击一下就会进入到这么一个界面:

我们能看到他与html一样, 我们能看到

双标签: 形如开头<ui> 结尾</ui>

单标签: 形如<resources/>

当然这些标签是人为定义的, 是谁定义的呢? 是那些开发QT的大佬进行定义的。

对应的工具: xml

对应的xml会调用一些qmake的工具来进一步生成对应的C++代码。

文件四: .pro工程文件

有点类似Linux的makefile

我们在使用创建项目的过程中会选择在这文件所在的路径

会发现它自动的给我们生成了build...的文件我们可以点击看一下

会生成一些列的临时文件。

QT的第一个成序编写一个hello word的程序

方法一:

不写代码的方法:

我们在下面发现一个label的东西,这玩意不要质疑, 他就是一个标签我们采用拖拽的方式来进行对应的项目的创建。

我们将内容进行修改之后,点击一下运行就能让我们的程序跑起来了。

我们对应的ui文件也发生了改变

只是我们直接使用控件的效果, 当然我们也能使用C++代码来进行编写:

方法二:

第11行我们在括号里填充了this 作用是给这个 label指定一个父对象,这个父对象是神么呢?

就是我们cpp中的widget w(与对象树有关)

在这里我们能发现一个奇怪的问题?

关于内存泄漏:

我们new出来了一个对象应该delete掉防止内存的泄露。

在这里我们为什么不用delete呢?这样不会内存泄露吗?

这样不会内存泄漏因为对象树的缘故, 他会给我们进行自动的进行析构的。

完结撒花

相关推荐
炘爚1 小时前
C++(整理合集)
开发语言·c++
Brilliantwxx1 小时前
【C++】认识标准库STL(1)
开发语言·c++·笔记·程序人生·算法
XMYX-01 小时前
20 - Go 互斥锁:Mutex 与并发安全
开发语言·golang
郝学胜-神的一滴1 小时前
深入epoll封装:event_set与event_add核心原理剖析
linux·服务器·开发语言·网络·c++·unix
gCode Teacher 格码致知1 小时前
Javascript提高:国际化 API(Intl 对象)详解-由Deepseek产生
开发语言·javascript·ecmascript
cany10001 小时前
C++ -- 模板使用进阶
开发语言·c++
littleM2 小时前
深度拆解 HermesAgent(六):研究功能与测试体系
开发语言·人工智能·python·架构·ai编程
小年糕是糕手2 小时前
【C/C++刷题集】栈、stack、队列、queue核心精讲
c语言·开发语言·数据结构·数据库·c++·算法·蓝桥杯
geovindu2 小时前
go: Observer Pattern
开发语言·观察者模式·设计模式·golang