QT项目代码解释

发布于:2024-05-16 ⋅ 阅读:(62) ⋅ 点赞:(0)

一、新建项目

怎么创建一个项目?
打开 QT Creator程序
在这里插入图片描述
1.如果用qt写一个GUI程序,就应该选这个
在这里插入图片描述
补充:

项目模板 说明
Application Qt 应⽤程序,包括普通窗体程序和 QtQuick 程序
Library 可以创建动态库、 静态库以及 Qt Quick 扩展插件、 QtCreator ⾃⾝插件
其他项⽬ 可以创建单元测试项⽬ 、Qt4 设计师⾃定义控件、 ⼦⽬录项⽬等
Non-Qt-Project ⾮ Qt 项⽬ 。可以创建纯 C 或纯 C++ 项⽬
Import Project 导⼊项⽬ ,从版本控制系统管理的软件项⽬导⼊旧的项⽬
Application Qt 应⽤程序,包括普通窗体程序和 QtQuick 程序

常⽤的只有第⼀类 Application,选择它,在右侧会看到 Qt 应⽤程序的五个⼦模板:
• Qt Widgets Application: 普通窗体模板,传统基于部件的窗体界⾯程序。
• Qt Console Application:Qt 控制台应⽤程序。 因为 Qt 主要⽤于图形界⾯设计,这个控制台项⽬ 模板基本不⽤。
• Qt for Python:在Python下⽤ LGPL 的许可来开发闭源 Qt 软件。
• Qt Quick Application: Qt 提供的⼀ 种⾼级⽤⼾界⾯技术,使⽤它可以⽅便快速的为移动以及嵌⼊ 式设备开发流畅美观的⽤⼾界⾯ 。Qt Quick 模块是开发 QML 应⽤的标准库,提供了使⽤ QML 创建 ⽤⼾界⾯所需的⼀ 切,包括可视化、 交互、动画、 模型、 视图、 粒⼦效果以及着⾊效果等。

2.然后输入项目名字和路径
在这里插入图片描述
3.选择QT项目的构建系统qmake
在这里插入图片描述
补充:

Qt 中的构建⼯具有三种可供选择,分别是: qmake、CMake、Qbs,下⾯依次介绍
• qmake: qmake 是⼀ 个构建⼯具(build tool), ⽤于⾃动⽣成 makefile ⽂件。 qmake ⽀持跨平 台构建。 qmake 编辑的是⼀个后缀名为.pro 的⽂件。
• CMake: CMake 是⼀ 个跨平台的构建⼯具。 CMake 本⾝不是⼀个编译器,其实就是⽣成⼀个让编译器能读懂编译流程的⽂件⼯具。 让 CMake ⾃动⽣成构建系统,例如 Makefile 和Visual Studio 项⽬⽂件。 CMake 是⼀ 个第三⽅⼯具,有⾃⼰的⽂档。
• Qbs: Qbs(Qt Build Suite: Qt构建套件) 同 qmake、CMake一样都是构建⼯具。 Qbs 号称是新一代的构建⼯具,⽐ qmake 编译速度更快。 Qbs 没有绑定 Qt 版本,它从项⽬⽂件的⾼级项⽬描述 中⽣成⼀ 个正确的依赖表。 ⽽传统的 MakeFile ⽣成⼯具如 qmake 和 CMake ,其在⽣成 MakeFile
⽂件后将实际的命令交给 Make ⼯具去执⾏。(Qt 官⽅声明,因市场原因,弃⽤ Qbs 。对于 Qt ⽤⼾来说,qmake 是当前使⽤最⼴泛的构建⼯具, CMake 其次。)

4.选择基类QWidget,勾选上Generate form(ui界面文件widget.ui)
在这里插入图片描述
补充:
对于基类的选择, ⽬前有三种基类:

基类 说明
QMainWindo w 主窗⼝类,⼀ 般⽤于较为复杂的应⽤程序,除了中央客⼾区界⾯ ,还包括菜单栏、 ⼯具栏、 状态栏以及多个可停靠的⼯具对话框等
QWidget 最简单、 最基本的窗体程序,⾥⾯可以放置多个控件实现程序功能
QDialog 基于对话框的程序,对话框⼀ 般⽤于弹窗,也可以⽤于主界⾯显⽰ 。对话框是从QWidget继 承⽽来的,并丰富了⼀ 些功能,如模态显⽰和返回值等

在这里插入图片描述

5.后面一直点下一个,直到完成,项目就创建好了。
注意:这个要确定勾选上
在这里插入图片描述
补充:

Translation:选择语言和翻译文件
kits:选择QT套件
Summary:选择版本控制系统

二、项目代码解析

2.1 main.cpp文件解析

在这里插入图片描述

2.2 widget.h文件解析

在这里插入图片描述

2.3 widget.cpp文件解析

在这里插入图片描述

三、通过图形化方式和代码方式创建第一个程序

两种方式实现 hello world
1.通过图形化的方式,在界面上创建出一个控件,显示 hello world
2.通过纯代码的方式,编写代码,在界面上创建控件,显示 hello world

3.1 图形化方式

第一步找到文件,双击进入ui文件
在这里插入图片描述
第二步鼠标左键拖动显示控件的Label控件到右边widget控件上。
在这里插入图片描述
补充:
1是QT内置的各种控件;2是标签部件。
第三步,双击选中标签控件,可以修改标签的属性
在这里插入图片描述
补充:
1是选中选中;2是通过树形结构显示出当前界面上有哪些控件;3是控件的各种属性。
注意:
在这里插入图片描述
在这里插入图片描述

3.2 代码创建方式

1.QT中的每个类都要包含对应的头文件
2.创建对象的时候可以在堆上创建,也可以在栈上创建。
3.
在这里插入图片描述
4.
在这里插入图片描述
5.总代码

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //堆上创建的方式
    QLabel* lab=new QLabel(this);
    lab->setText("hello world");
}

Widget::~Widget()
{
    delete ui;
}

最终Debug构建显示(两个 hello world):
在这里插入图片描述

四、项目文件解析

项目文件就是.pro文件
在这里插入图片描述

.pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件。类似于VS中的.sln
和vsproj文件。

以下是.pro文件的一个案例:

#引入Qt的模块,core gui
QT       += core gui
#如果qt版本大于4,那么引入widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#生成最终文件的文件名,可执行文件exe
TARGET = 01_MyWidget
#项目类型,生成什么类型的文件,可执行程序还是库文件
TEMPLATE = app
#要编译的源文件列表
SOURCES += \
        main.cpp \
        widget.cpp
#要编译的头文件列表
HEADERS += \
    widget.h

.pro文件的规则:

 1.注释
            从“#”开始,到这一行结束。
 2.模块引入
            QT += 模块名,表示当前项目引入Qt哪些模块。
            引入模块的意思就简单理解为引入C/C++头文件搜索路径,如果没引入对应模块就使用该头文件的话会报错说找不到该头文件。当然不必要的模块还是别引入,因为引入模块不仅仅是引入头文件搜索路径那么简单,还包括引入连接的库等一系列操作,会让程序变臃肿。
 3.模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:TEMPLATE = app
            app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
            lib - 建立一个库的makefile。
            vcapp - 建立一个应用程序的VisualStudio项目文件。
            vclib - 建立一个库的VisualStudio项目文件。
            subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。
 4.指定生成的应用程序名:
       	    TARGET = QtDemo
 5.工程中包含的头文件
            HEADERS += include/painter.h
 6.工程中包含的.ui设计文件
            FORMS += forms/painter.ui
 7.工程中包含的源文件
            SOURCES += sources/main.cpp sources
 8.工程中包含的资源文件
            RESOURCES += qrc/painter.qrc    
 9.greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
            这条语句的含义是,如果QT_MAJOR_VERSION大于4(也就是当前使用的Qt5及更高版本)需要增加widgets模块。如果项目仅需支持Qt5,也可以直接添加“QT += widgets”一句。不过为了保持代码兼容,最好还是按照QtCreator生成的语句编写。
 10.配置信息
            CONFIG用来告诉qmake关于应用程序的配置信息。
            CONFIG += c++11 //使用c++11的特性(qt5.6以上版本默认使用C++11)
            在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项更安全。