目录

一、Qt Creator 简介

二、开发环境:

三、项目创建

        1. 新建工程

        2. 项目文件介绍

        3. *.pro 文件

        4. main.cpp 文件

        5. mainwindow.h 文件

        6. mainwindow.cpp 文件 


一、Qt Creator 简介

        Qt Creator 是由 Qt Group 公司自 1991年 开发的一款跨平台的集成开发环境(IDE),用户可以在 Qt Creator 的代码编辑器上使用 C ++、QML、JavaScript、Python 以及其他语言编写应用进程。Qt Creator 可在 Windows,Linux 和 macOS 桌面操作系统上运行,并支持用户在桌面、移动和嵌入式平台上创建应用进程。Qt Creator 集成了主流的版本控制功能,可以对接及调用的功能包括 Git、Subversion、Perforce 和 Mercurial

        从创建项目开始 Qt Creator 能自发的生成必要文件, 包括 Cmake 和 qmake 构建工具以及进行交叉编译,确保了在桌面、移动和嵌入式操作系统上构建并运行应用进程,Qt Creator 将源代码编译为机器语言,加快启动时间和 UI 性能。


二、开发环境:

  • 系统平台: Windows 11
  • 系统环境:Ubuntu 20.04
  • 开发平台:Qt Creator 5.15.2
  • 虚拟环境: Windows Subsystem for Linux 2(WSL 2)

三、项目创建

        1. 新建工程

        初次打开 Qt Creator 后选择左上角的 File (文件)选项,紧接着选择 New Project... (新建工程)选项

        新建工程页面提供多种用户界面编程模板,本文选择的 Application 选项呈现出 4 种基本的样式,其他版本的 Qt Creator 有可能时 2 个选项。

Qt Widgets Application 简介:

        创建一个基于 widget 的 Qt 应用程序,其中包含一个基于 Qt Designer 的主窗口以及用于实现应用程序逻辑的 C++ 源文件头文件,提供可视化的用户图形界面。(** 本文选择 **

Qt Console Application 简介:

        创建一个包含单个 main.cpp 文件的项目,该文件只有代码编写界面,没有提供可视化的图形用户界面。


Qt Quick Application 简介:

        创建包含 QML C++ 代码的 Qt Quick 应用程序,可以构建应用程序并将其部署到桌面、嵌入式和移动目标平台。其中创建了一个可在 Qt Design Studio 中打开的项目,拥有一个用于 Qt Quick UI 的可视化编辑器。

Qt Quick Application(compat) 简介:

        创建一个包含空窗口的 Qt Quick 应用程序,提供 CMake 以外的其他编译系统或低于 6 的 Qt  "兼容 "版本

        给工程文件命名时需注意不能出现 '空格' 在工程名的名称中,否则会报错,填写好名称后点击 Next (下一项),进入构建工具选项。

         进入构建工具选项以后会看到有三个选项供我们选择,本文选择 qmake 进行构建

qmake 简介:

        qmake 是当前使用 Qt Creator 最广泛的构建系统。qmake 是根据 Qt 工程文件(.pro)的配置生成对应的 MakeFile 文件工程文件(.pro)一般都是由 Qt 的开发环境 Qt Creator在运行过程中自动生成的,只需要使用 Qt Creator 创建工程或运行工程。在 Linux 系统下会生成对应的 MakeFile 文件,指导 make 工具编译工程项目。

CMake 简介:

        cmake 跨平台项目管理工具,可以使用更为抽象的语法来组织项目。例如构建工程所需要的依赖库,如果需要嗲用 math 库,在使用过程中不在需要将 math.dll 以及 libmath.so 文件都写入到构建文档中去,在 Linux 系统下会生成对应的 MakeFile 文件,指导 make 工具编译工程项目。

QBS 简介:

        QBS 是新一代的构建工具,构建速度上相比 qmake 编译的速度更快, QBS 能够直接从项目文件的项目描述中生成编译文件。而传统的 MakeFile 生成工具( qmake、CMake) 会在编译过程中生成 MakeFile 文件,再由 make 工具根据 MakeFile 文件的相关配置去执行。QBS 本质是一个生成器、直接调用编译器、连接器以及其他工具。

         下面进入的选项为类文件名称,实质是给自己的窗口起一个名称,本文在第二项基类中选择了 QMainWindow

Qwidget 简介:

        Qwidget  是 Qt 中所有用户界面元素的基类。从按钮到文本框,甚至包括窗口和对话框,所有这些都是 Qwidget  的子类。Qwidget  可以是可视化元素,也可以作为其他可视化元素的容器。简单来说 Qwidget 常用于嵌入式开发,无标题栏、无底部选项栏的一种界面。

QDialog 简介:

       QDialog 是用于创建对话框的类。对话框是一种特殊类型的窗口,通常用于短暂的任务和简短的通信。用户可以通过对话框输入或选择信息,例如一些应用的 “确定” 弹窗之类的界面。

QMainWindow 简介:

        QMainWindow 是专为需要菜单栏、工具栏、状态栏和中央窗口小控件的标准应用程序而设计的,通常用作应用程序的主窗口,包含前三项所有的功能。

        参考原文:Qt6.2教程——2.介绍 Qt 中的 QWidgets、QMainWindow 和 QDialog - 知乎

        Qt Creator 的翻译选项,本文不对此处做赘述,内容可以参考:超越 C++ 的 Qt 翻译 - 知乎

        下面进入构建套件的选项卡,根据英文 Kit 可以理解为工具箱的意思,其中包含很多可以使用到的工具。此处的 Desktop Qt5.15.2 GCC 64bit 编译器是在安装组件时选择的编译器,具体根据所安装的内容进行选择

         此处为项目管理选项卡,此处可以选择版本控制器包括前文所叙述的 Git、Subversion、Perforce 和 Mercurial 等工具,本文在此处不做选择。

        此时项目工程文件就搭建完毕了,这里是初始的空白界面 

        2. 项目文件介绍

  • .pro 是项目管理文件,这个项目管理文件十分重要,当你加入了文件或者删 除了文件,Qt Creator 会自动修改这个*.pro文件。有时候需要打开这个*.pro文件添加我们 的设置项。
  • Header分组,这个节点下存放的是项目内所有的头文件*.h。
  • Source分组,这个节点下存放的是项目内的所有C++源码文件*.cpp。
  • Forms分组,这个节点下是存放项目内所有界面文件*.ui,*.ui文件由XML语言描述组成, 编译时会生成相应的cpp文件。

        3. *.pro 文件

        此处存放的是 qmake 构建工具构建 MakeFile 文件所需的相关参数

# 添加了Qt的支持的模块,core与gui库是Qt的默认设置。
QT       += core gui

# 相比 Qt4 版本,Qt5 在 main.cpp 中的 application 增加了 QtWidgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

#,Qt5.15 使用的是 C++ 17
CONFIG += c++17

# 编译生成的目标文件名,具体请进入 build 文件夹下查看,在工程文件的上一级目录
TARGET = main

# You can make your code fail to compile if it uses deprecated APIs.
# 如果您的代码使用了过时的 API,您可以让它无法编译。
# In order to do so, uncomment the following line.
# 为此,请取消下面一行的注释。
# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    
# disables all the APIs deprecated before Qt 6.0.0
# 禁用所有 Qt 6.0.0 之前废弃的 API

# 变量 SOURCES 目录下存储的源文件
SOURCES += \
    main.cpp \
    mainwindow.cpp

# 变量 HEADERS 目录下存储的头文件
HEADERS += \
    mainwindow.h

# FORMS存放的是ui界面文件
FORMS += \
    mainwindow.ui

# 部署默认的规则,此处可以添加用户所需要自定义的规则
# Default rules for deployment.
# qnx:判断是不是qnx操作系统,赋值 target.path = /temp/$${TARGET}/bin
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

         Qt Creator 支持的相关模块可以参考:https://doc.qt.io/archives/ ,在本页面中选择安装 Qt 的对应版本。

         接下来选择 Qt 的所有模块页面

        Qt Essentials 定义了Qt在所有平台上的基础。它们可在所有受支持的开发平台和经过测试的目标平台上使用。除了测试模块将保持源代码兼容外,这些模块将在整个Qt 5中保持源代码和二进制兼容。基本模块是通用的,对大多数Qt应用程序都很有用。用于特殊用途的模块被视为附加模块,即使它在所有受支持的平台上都可用。 (点击相应的模块即可进入编写指南

模块描述
Qt Core其他模块使用的核心非图形类。
Qt GUI图形用户界面 (GUI) 组件的基类。包括 OpenGL。
Qt Multimedia音频、视频、无线电和相机功能类。
Qt Multimedia Widgets用于实现多媒体功能的基于小部件的类。
Qt Network使网络编程更简单、更便携的类。
Qt QMLQML和JavaScript语言的类。
Qt Quick用于构建具有自定义用户界面的高度动态应用程序的声明性框架。
Qt Quick Controls提供轻量级 QML 类型,用于为桌面、嵌入式和移动设备创建高性能用户界面。这些类型采用简单的样式体系结构,并且非常高效。
Qt Quick Dialogs用于从Qt Quick应用程序创建系统对话框并与之交互的类型。
Qt Quick Layouts布局是用于在用户界面中排列基于Qt Quick 2的项目。
Qt Quick TestQML应用程序的单元测试框架,其中测试用例被编写为JavaScript函数。

注意: 二进制兼容性保证不适用于Qt快速测试。但是,它将保持源兼容。

Qt SQL使用 SQL 进行数据库集成的类。
Qt Test用于单元测试Qt应用程序和库的类。

注意: 二进制兼容性保证不适用于Qt测试。但是,它将保持源兼容。

Qt Widgets使用C++小部件扩展Qt GUI的类。

        4. main.cpp 文件

        main.cpp 为本界面程序的源文件

#include "mainwindow.h"

#include <QApplication>

/* @Description: 程序的主函数,或称之为程序的入口 
 * @param argc - 代表命令行的参数个数
 * @param argv - 代表命令行参数具体内容
 */
int main(int argc, char *argv[])
{
    // QGuiApplication a(argc, argv) ,管理Qt程序的运行,和设置Qt应用程序,针对非QWidget应用程序,比如QQuick
    // QCoreApplication a(argc, argv), 管理Qt程序的运行,和设置Qt应用程序,针对无界面的应用程序
    // QApplication a(argc, argv), 管理Qt程序的运行,和设置Qt应用程序,针对QWidget应用程序
    QApplication a(argc, argv); 

    // MainWindow 是我们之前创建工程时定义的类(起的类名),w是创建的对象
    MainWindow w;

    // w对象调用了show()方法
    w.show();

    //事件循环,QEventLoop: :exec(),等待鼠标或键盘的输入
    return a.exec();
}

        5. mainwindow.h 文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    // 槽函数的宏定义
    Q_OBJECT    

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

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

        6. mainwindow.cpp 文件 

#include "mainwindow.h"
#include "ui_mainwindow.h"

/* 构造函数 */
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)     //此处的 ui 使用了 C++ 的初始化列表,等价于 ui = new Ui::MainWindow
{    
    ui->setupUi(this);
}

/* 析构函数 */
MainWindow::~MainWindow()
{
    delete ui;
}

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐