QT的工程文件认识

目录

1、QT介绍

2、QT的特点

3、QT模块

3.1基本模块

3.2扩展模块

4、QT工程创建

1.选择应用的窗体格式

2.设置工程的名称与路径

3.设置类名

4.选择编译器

[5、QT 工程解析](#5、QT 工程解析)

[xxx.pro 工程配置](#xxx.pro 工程配置)

[xxx.h 头文件](#xxx.h 头文件)

[main.cpp 主函数](#main.cpp 主函数)

[xxx.cpp 文件](#xxx.cpp 文件)

[6、纯手工创建一个QT 工程](#6、纯手工创建一个QT 工程)

[1.创建一个纯C++ 工程](#1.创建一个纯C++ 工程)

[2.在xxx.pro 添加模块](#2.在xxx.pro 添加模块)

3.设计界面代码

7、UI文件设计界面


1、QT介绍

百度百科的解释:

Qt [1] 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

简单理解:QT 就是使用C++ 封装的一个图形界面库。

QT是通用的C++开发界面框架( C++ 图形用户界面 应用程序开发框架。)它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

历史

1991年由QT公司开发跨平台C++图形用户界面应用程序开发框架。

2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。 2012年,Qt被Digia收购

版本 QT4---2009 QT5---2013 --主流版本 QT6---2021

特点 跨平台、面向对象、丰富的API

应用

咪咕音乐:咪咕音乐是中国移动倾力打造的正版音乐播放器

WPS Office:金山软件公司推出的办公软件

极品飞车:EA公司出品的著名赛车类游戏

2、QT的特点

QT的特点就是跨平台性很强,在QT中设计的界面可以放入不同的平台下运行如下图

嵌入式: 不同芯片型号的开发板 gec6818,rk1808,rk3399 .. 桌面端: windows ,ios ,linux ... 移动端: Android 微控制器: STM32 在QT 开发的程序可以在上述平台上运行!

3、QT模块

QT本身不是一种编程语言,而是一个用标准C++编写的跨平台开发类库,它对标准C++进行了很多扩展,引入很多新的概念和功能,比如信号与槽函数等等。同时为开发GUI应用程序和非GUI应用程序提供了各种类,QT类库中各种类是以模块的形式分类组织,一个模块就是一个编程主题比如数据库、网络、多线程等等

3.1基本模块

3.2扩展模块

4、QT工程创建

1.选择应用的窗体格式

项目选择Application,也就是创建一个Qt应用程序,那么右边就是选择以什么方式创建

Qt WidgetsAppliction 是基于c++语言的窗口工程

Qt Console Application 基于C++的控制台工程

Qtfor Python-Empty 创建基于Python的空工程。

Qtfor Python-window 创建基于Python的窗口工具。

Qt QuickApplication -Empty 创建基于QML的快速应用空工程。

Qt Quick Application -Scroll创建基于QML滑动窗口工程。

Qt Quick Application -Stack创建基于QML的栈窗口工程。

Qt QuickApplication -Swipe创建基于QML的触摸移动窗口工程

2.设置工程的名称与路径

3.设置类名

4.选择编译器

5、QT 工程解析

MVC模式:经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。模型-视图-控制器(MVC)

xxx.pro 工程配置

cpp 复制代码
#添加QT 模块,现有模块才有类
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

#使用c++11 语法进行工程编译
CONFIG += c++11

#开启编译警告
DEFINES += QT_DEPRECATED_WARNINGS

#添加工程源码
SOURCES += \
    main.cpp \
    mainwindow.cpp

#添加工程头文件
HEADERS += \
    mainwindow.h

#添加工程的界面文件
FORMS += \
    mainwindow.ui

#默认的编译器路径 
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

xxx.h 头文件

cpp 复制代码
//防止头文件重复包含
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

//包含QMainWindow头文件
#include <QMainWindow>

//宏定义 作用:用于关联 XXXX.UI文件
QT_BEGIN_NAMESPACE

//定义一个UI 的命名空间包含MainWindow
namespace Ui { class MainWindow; }
//宏定义
QT_END_NAMESPACE

//定义一个MainWindow类公共继承 QMainWindow
class MainWindow : public QMainWindow
{
    //宏定义 作用:用于实现信号与槽
    Q_OBJECT

public:
    //构造函数
    MainWindow(QWidget *parent = nullptr);
    //析构函数
    ~MainWindow();

private:
    Ui::MainWindow *ui; //定义一个私有成员 ui
};
#endif // MAINWINDOW_H

main.cpp 主函数

cpp 复制代码
//添加用户自定义的mainwindow.h头文件
#include "mainwindow.h"

//添加系统应用头文件
#include <QApplication>

//主函数
int main(int argc, char *argv[])
{
    //创建一个应用对象
    QApplication a(argc, argv);

    //创建一个自定义窗体类
    MainWindow w;
    //显示窗体
    w.show();

    //执行应用
    return a.exec();
}

xxx.cpp 文件

cpp 复制代码
//添加头文件 
#include "mainwindow.h"
//QT软件 自动生成窗体头文件 
#include "ui_mainwindow.h"

//构造函数                         参数列表初始化 传递parent给父类  初始化UI指针
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
    //调用ui类里面的setupUi函数
    ui->setupUi(this);
}

//析构函数
MainWindow::~MainWindow()
{
    //释放构造函数分配的堆空间 
    delete ui;
}

6、纯手工创建一个QT 工程

1.创建一个纯C++ 工程

2.在xxx.pro 添加模块

cpp 复制代码
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle

#添加QT 3大模块
QT       += core gui widgets

SOURCES += \
        main.cpp
        
QT本身不是一种编程语言,而是一个用标准C++编写的跨平台开发类库,它对标准C++进行了很多扩展,引入很多新的概念和功能,比如信号与槽函数等等。同时为开发GUI应用程序和非GUI应用程序提供了各种类,QT类库中各种类是以模块的形式分类组织,一个模块就是一个编程主题,比如数据库、网络、多线程等等。

Qt Core模块:是QT类库的核心,所有其他模块都依赖这个模块。
Qt Gui模块:提供GUI程序的基本功能。
Qt Network模块:提供跨平台的网络功能。
Qt Widgets模块:提供创建用户界面的功能。

3.设计界面代码

cpp 复制代码
创建QT应用对象QApplication,创建窗体对象QMainWindow,创建标签对象QLabel
需要包含对对应的头文件#include<QApplication><QMainWindow><QLabel>
退出的时候需要使用应用对象.exec()

#include <iostream>

using namespace std;

//添加QT应用头文件
#include <QApplication>

//添加自带窗体头文件
#include <QMainWindow>

//添加标签头文件
#include <QLabel>



int main(int argc, char **argv)
{
    //创建一个QT应用对象
    QApplication a(argc,argv);

    cout << "Hello World!" << endl;

    //创建一个窗体对象 ,必须要在创建窗体前创建一个应用,因为所有窗体都是在应用上面的
    QMainWindow  w;

    //创建一个标签对象,w对象是他的父亲
    QLabel lb(&w);

    lb.setText("今天真凉快"); //设置标签的内容

    lb.setGeometry(50,50,100,100); //设置标签的位置

    lb.show(); //显示标签

    //显示窗体
    w.show();

    //一直执行
    return a.exec();

}

7、UI文件设计界面

UI的原理:当用户修改UI界面文件后,界面未发生任何改变,那么就要自己去修改 ui_xxxx.h 文件

相关推荐
薄荷故人_25 分钟前
从零开始的C++之旅——红黑树封装map_set
c++
lw向北.26 分钟前
Qt For Android之环境搭建(Qt 5.12.11 Qt下载SDK的处理方案)
android·开发语言·qt
汤姆和佩琦44 分钟前
2024-12-25-sklearn学习(20)无监督学习-双聚类 料峭春风吹酒醒,微冷,山头斜照却相迎。
学习·聚类·sklearn
悲伤小伞1 小时前
C++_数据结构_详解二叉搜索树
c语言·数据结构·c++·笔记·算法
好学近乎知o1 小时前
正则表达式(学习Django过程中可能涉及的)
学习·正则表达式·django
雨中奔跑的小孩1 小时前
爬虫学习案例8
爬虫·学习
jieshenai1 小时前
使用 VSCode 学习与实践 LaTeX:从插件安装到排版技巧
ide·vscode·学习
小灰灰搞电子1 小时前
Qt实现Android的图案密码(图形解锁)源码分享
开发语言·qt
m0_675988232 小时前
Leetcode3218. 切蛋糕的最小总开销 I
c++·算法·leetcode·职场和发展
灰太狼不爱写代码4 小时前
CUDA11.4版本的Pytorch下载
人工智能·pytorch·笔记·python·学习