QT C++(发展历史,简述,环境搭建QT5.14,构建Widget项目代码解释)

1. QT发展历史,简述

QT是一个跨平台的C++图形界面应用程序框架

  1. QT在1991年由奇趣科技开发
  2. 2008年被诺基亚收购
  3. 2012年QT被Digia公司收购
  4. 2014 QT Creator 5.3正式版发布,至此QT对IOS,安卓,等各平台的支持

QT支持的平台:

Windows,Linux(KDE),Unix,Android,Mac,Embedded(嵌入式系统)

QT版本

QT6和QT5之间的核心功能差不多,这里使用QT5

QT在发布时有两种许可证:

  1. 开源许可:使用QT开发时不需要支付费用
  2. 商业许可:使用QT开发时需要支付费用

开源许可与商业许可区别在技术支持上,商业许可会额外提供技术支持和其他功能

QT优点:

  1. 跨平台
  2. 接口简单
  3. 简化内存回收机制(半自动垃圾回收机制)
  4. 开发效率高

QT应用场景:

  1. 桌面应用程序(文件管理程序,媒体播放程序,绘图程序等)
  2. 移动应用程序
  3. 嵌入式应用程序(车载程序,工业桌面程序等)

2. 环境搭建

QT开发环境需要安装:

  1. C++编译器

  2. QT SDK(软件开发工具包,Windows环境下SDK内置C++编译器,在具体安装时需要勾选)

  3. 集成开发环境IDE(Qt Creator(官方),Visual Studio,Eclipse)

    Qt Creator在安装QT SDK时勾选即可

QT SDK5.14下载

QT SDK下载官网
在这里插入图片描述
在这里插入图片描述
下载比较慢的话可以使用镜像源,我这里使用官方源下载

下载过程

注册QT账号,如果不需要则断开网络安装
在这里插入图片描述
在这里插入图片描述

MinGW 7.2 64bit选择,其他按照需要选择,我这里多选了Android

之后配置环境变量(非必须)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置完毕环境变量后

  1. QTCreator可以找到QT SDK中提供的exe.
  2. 运行QT程序后,可以找到对应的动态库

在这里插入图片描述
Linguist:允许单独创建一个语言配置文件,把界面上需要的文字保存到配置文件上,并且在文字使用前提前把各种语言的翻译都配置进去,可以起到一键切换语言的功能。

使用案例验证是否安装成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
元编译技术:QT框架会在编译的时候自动调用一系列的生成工具,基于你自己写的代码来生成一系列其他代码,最后编译的代码是最后生成的那些代码。
在这里插入图片描述

使用QTCreator会自动生成代码,生成的代码包含父类,可以自己设置名称

  1. QMainWindow:完整的应用程序窗口
  2. QWidget:表示一个控件(窗口,按钮等等)
  3. QDialog:对话框

测试时选择QWidget
在这里插入图片描述
在这里插入图片描述
from file作用:
QT中创建图形化界面程序有两种方式

  1. 使用C++代码创建
  2. 通过from file,以图形化的方式来生成界面

在这里插入图片描述

在这里插入图片描述
选择那个编译器的QT SDK来构建后续代码
在这里插入图片描述

在这里插入图片描述

构建项目代码解释

在这里插入图片描述

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
  1. QApplication:编写QT程序需要这个对象

  2. Widget:创建项目的类目,自动创建这个类。创建一个控件对象,使用show方法显示。这个方法是由Widget父类QWidge实现的

  3. a.exec():exec表示让程序运行起来

在这里插入图片描述

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h" //from file 被qmake生成的文件

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);//将from file生成的文件和当前widget关联起来
}

Widget::~Widget()
{
    delete ui;
}
  1. Q_OBJECT:QT内置宏,宏展开是一堆代码,当使用QT信号,槽机制时就需要引入Q_OBJECT宏。

  2. Widget(QWidget *parent = nullptr):在QT中引入了对象树机制,创建QT对象后,就可以向对象树(n叉树)上挂,在向对象树上挂时需要指定父对象

  3. Ui::Widget *ui:与from file密切相关。

  4. #include “ui_widget.h” :from file 被qmake生成的文件

widget.ui:
在这里插入图片描述

TestQT.pro: QT项目的工程文件,qmake构建时的依据,类似makefile
在这里插入图片描述

  1. QT+=:要引入的QT模块
  2. CONFIG:编译c++选项
  3. SOURCES,HEADERS,FORMS:项目参与构建的文件,QTCreator自动生成

qmake+.pro的作用和makefile是一致的

当项目编译后会生成下面的文件

在这里插入图片描述

  1. ui_widget.h:widget.ui资源文件,QT自动生成的文件,这个代码在setupUI这个方法生成具体的界面细节

相关推荐

  1. QT 5.14.2 Android环境问题解决

    2024-04-07 14:48:03       45 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-07 14:48:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-07 14:48:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-07 14:48:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-07 14:48:03       20 阅读

热门阅读

  1. SPI123456

    2024-04-07 14:48:03       14 阅读
  2. ffmpeg 视频格式转换

    2024-04-07 14:48:03       17 阅读
  3. redis的Set详细介绍

    2024-04-07 14:48:03       12 阅读
  4. redis修改协议改了,有哪些替代品?

    2024-04-07 14:48:03       15 阅读
  5. 如何让你的回答有逻辑?-开放式问题应答技巧

    2024-04-07 14:48:03       19 阅读
  6. C++类和对象(上)

    2024-04-07 14:48:03       16 阅读
  7. Vscode已经安装imutils但是依旧报错

    2024-04-07 14:48:03       23 阅读
  8. 设计模式:生活中的观察者模式

    2024-04-07 14:48:03       18 阅读
  9. Spring相关实战

    2024-04-07 14:48:03       13 阅读
  10. Flutter Engine引擎概念

    2024-04-07 14:48:03       20 阅读
  11. HOW - 前端国际化之多语言通用方案

    2024-04-07 14:48:03       16 阅读