当前位置: 首页 > backend >正文

QT 第一讲 --- 基础篇 Qt 基础环境搭建

前言:

欢迎来到《Qt》系列课程的第一讲!在当今软件开发领域,跨平台、高效能的工具需求日益增长,而 Qt 作为一款久经考验的跨平台C++框架,凭借其强大的功能、灵活的扩展性和友好的开发体验,成为工业、嵌入式、桌面应用甚至移动开发的热门选择。无论是开发智能家居界面、工业控制软件,还是打造精美的桌面应用程序,Qt都能提供完整的解决方案。

本讲作为系列课程的起点,将专注于 Qt开发环境的搭建。对于任何编程技术而言,一个稳定、高效的环境都是成功的基石。

无论你是刚接触Qt的新手,还是希望系统化巩固知识的开发者,本讲都将为你扫清入门障碍,为后续的深入学习奠定基础。现在,让我们开始行动吧!


目录

前言:

一、下载QTSDK

1.1 各种常见工具介绍

1.2 下载QTSDK

1.3Qt SDK 的安装

1.4 验证安装是否成功

1.5 Qt 环境变量配置 

二、认识一下使用工具

三、使用QTCreate创建项目

3.1 找到右上角的文件

3.2 选择合适的模板

3.3 正式搭建项目环境

1)选好创建路径与名称

2)选择构建系统

 4)填写类信息设置界⾯

5)语言问题

6)选择 Qt 套件

7)选择版本控制系统

3.4  观察项目运行结果

四、项目代码的讲解

4.1 widget.h介绍

1. 头文件保护(Header Guard)

 2.Q_OBJECT 宏与信号槽机制

3. Qt 类的头文件包含规则

4. Qt 对象树(Object Tree)

4.2 widget.cpp

4.3 widget.ui 

总结:


一、下载QTSDK

Qt ⽀持多种开发⼯具,其中⽐较常⽤的开发⼯具有:Qt Creator、Visual Studio、Eclipse.

1.1 各种常见工具介绍

1、Qt Creator Qt Creator 是⼀个轻量级的跨平台集成开发环境(IDE),专为使⽤ Qt 框架进⾏应⽤程序开发⽽设 计。(******)

它是⼀个功能强⼤、易于使⽤、快速且⾼效的⼯具,被⼴泛⽤于编写各种类型的应⽤程序,如桌⾯应 ⽤程序、移动应⽤程序和嵌⼊式系统等。

Qt Creator 提供了⼀个可视化的界⾯设计器和代码编辑器,可以帮助开发者更快捷地创建复杂的⽤⼾ 界⾯和处理各种事件。

它还包含了调试⼯具、版本控制⼯具、⾃动完成和智能提⽰等功能,以及⽀持多语⾔和跨平台的开发 环境。

Qt Creator 的主要特点包括:

紧密集成的 Qt 框架:Qt Creator 专⻔为 Qt 开发⽽设计,因此它与 Qt 框架集成得⾮常紧密,使开 发者可以更容易地管理和部署他们的应⽤程序。

强⼤的编辑器:Qt Creator 具有⼀些先进的编辑器功能,如语法⾼亮、代码折叠、智能提⽰、⾃动 完成和代码重构。

集成的调试器:Qt Creator 内置了调试器,允许开发⼈员在代码中设置断点以及检查变量、堆栈和 调⽤树等信息。

⾼效的构建系统:Qt Creator 提供了⼀个⾼效的构建系统,可以⾃动构建和部署应⽤程序,同时⽀ 持使⽤不同的编译器和平台。

可视化界⾯设计器:Qt Creator 具有⼀个可视化界⾯设计器,它允许开发⼈员在没有编写代码的情 况下创建复杂的⽤⼾界⾯。

多语⾔⽀持:Qt Creator ⽀持多种编程语⾔,包括 C++、QML、JavaScript 等。

总⽽⾔之,Qt Creator 是⼀个功能⻬全、易于使⽤且⾼效的跨平台 IDE,适⽤于各种类型的应⽤程序开 发,特别是那些使⽤ Qt 框架的开发者。

后续的博客中使⽤ Qt Creator 开发 Qt 程序.

2、Visual Studio Visual Studio 是由微软公司开发的集成开发环境(IDE)。

它可以⽤来开发多种类型的应⽤程序。包括 Windows 桌⾯应⽤程序、Web应⽤程序、移动应⽤程序、游戏等。

Visual Studio 提供了丰富的开发⼯ 具和功能,包括代码编辑器、调试器、⾃动完成、代码重构、版本控制等等。

它⽀持多种编程语⾔, 如:C++、C#、Visual Basic、F#、Python等。Visual Studio 还可以与其他开发⼯具和服务集成,如 Azure 云服务、GitHub、Jenkins等。

Visual Studio 具有以下⼀些主要特点:

多语⾔⽀持:Visual Studio ⽀持多种编程语⾔,包括 C++、C#、Visual Basic、F#、Python、 JavaScript 等;

丰富的⼯具集:VS 提供了各种开发⼯具,包括代码编辑器、调试器、代码分析⼯具等,以提⾼开 发⼈员的效率;

可视化设计:VS提供了可视化的设计⼯具,如窗体设计器、WPF 设计器等,使开发⼈员可以直观 地设计⽤⼾界⾯;

跨平台开发:VS ⽀持跨平台开发,可以开发适⽤于 Windows、Linux 和 macOS 等多个平台的应 ⽤程序;

集成的调试器:VS 集成了强⼤的调试器,可以进⾏代码的单步调试、断点调试等操作来帮助开发 ⼈员查找和修复错误;

丰富的扩展性:VS 可以通过安装扩展来扩展其功能,开发⼈员可以根据⾃⼰的需求选择并安装适 合的扩展。

3、Eclipse Eclipse 是著名的跨平台的⾃由集成开发环境(IDE)。

最初主要⽤来 Java 语⾔开发,但是⽬前亦有⼈ 通过插件使其作为其他计算机语⾔⽐如 C++ 和 Python 的开发⼯具。

Eclipse 的本⾝只是⼀个框架平 台,但是众多插件的⽀持使得 Eclipse 拥有其他功能相对固定的 IDE 软件很难具有的灵活性。

许多软件 开发商以 Eclipse 为框架开发⾃⼰的 IDE。

Qt 框架可以与 Eclipse 集成,使开发者可以使⽤ Eclipse 的 强⼤功能来开发 Qt 应⽤程序。

1.2 下载QTSDK

进入QT的官网下载就好。

Qt 下载官⽹:http://download.qt.io/archive/qt/

国内清华源: https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/

进⼊官⽹,进⾏相应的系统版本下载即可。

1.3Qt SDK 的安装

1、找到下载的⽂件并双击;

注意:在双击之前先断⽹,否则需要我们注册 Qt 账号登录后才能进⼊下 ⼀步安装;

2、双击之后进⼊如下界⾯:

3、选择安装路径时不能出现中⽂路径,否则即使安装上也⽆法使⽤;

剩下的大家直接按照下图所示的组件安装就好了。

剩下的就是正常的安装过程了大家直接next就好。

1.4 验证安装是否成功

验证 Qt SDK 安装是否成功

1、双击打开 Qt Creator ⼯具,并进⼊到 "欢迎模式" 下的 "⽰例" 界⾯;

打开如果出现上面的画面证明QTCreater的安装是成功的。 

1.5 Qt 环境变量配置 

这步主要是为了解决一些同学在下载完后,使用QT创建项目运行的时候,总是报警,说出现取少某某库的情况。

1、找到Qt的安装路径,复制 "bin" 路径;

2、"此电脑" ------> ⿏标右键, "属性" ------> "⾼级系统设置" ------> "环境变量" 

3、"环境变量" ------> 找到path,填⼊ "bin" 路径 ------> "确定" ; 

4、注意:在关掉所有窗⼝时,⼀定要点击 "确定" ,否则上述配置⽆效。

  • 为什么要设置环境变量 环境变量是在操作系统中⼀个具有特定名字的对象,它包含了⼀个或者多个应⽤程序将要使 ⽤到的信息。
  • 例如Windows 和 DOS 操作系统中的 path 环境变量,当要求系统运⾏⼀个程序⽽没有告诉它 程序所在的完整路径时,系统除了在当前⽬录下⾯寻找此程序外,还会到 path 中指定的路径 去找。
  • 在 Windows 上设置 Qt 的环境变量是为了能够在命令⾏或其他应⽤程序中直接访问 Qt 相关 的命令和⼯具。 

二、认识一下使用工具

这是我们主要使用的几个工具,但是大部分都被集成到了QTCreate里面了。

  1. Qt 官方离线文档

    • 提供离线版英文官方文档(主要参考)。

    • 虽有非官方中文文档,但建议优先阅读英文文档。

  2. Qt 设计师(Qt Designer)

    • 图形化界面设计工具,支持拖拽控件快速生成界面。

    • 常与 Qt Creator 配合使用。

  3. Qt 语言家(Qt Linguist)【目前在学习阶段没必要关心】

    • 国际化支持工具,用于多语言适配。

    • 可创建语言配置文件,集中管理界面文字的多语言翻译(如中、英、法语等)。

    • 通过 API 实现“一键切换语言”,适配不同国家/地区的需求。

  4. Qt 集成开发工具(Qt Creator)
    学习 Qt 过程中主要使用的开发环境。


三、使用QTCreate创建项目

3.1 找到右上角的文件

3.2 选择合适的模板

 我们是初学者,所以直接选择第一个模板就好了。

当然模板也有不同,下面我们也介绍一下,有兴趣的同学可以查询相关资料。

新建项⽬对话框⾥有五类项⽬模板:

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

常⽤的只有第⼀类 Application,我们选择它。 

3.3 正式搭建项目环境

1)选好创建路径与名称

2)选择构建系统

选择 Qt 项⽬的构建系统,使⽤默认的 "qmake" 即可。 

Qt 中的构建⼯具有三种可供选择,分别是:qmake、CMake、Qbs,下⾯依次介绍。

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

 4)填写类信息设置界⾯

对于基类的选择,⽬前有三种基类:

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

对于我们目前的学习水平的话,我们可以直接使用最简单的QWidget就好。

5)语言问题

选择语⾔和翻译⽂件 点击 "下⼀步" 进⼊如下界⾯:

此处选择的语⾔是 "汉语", "英语" 这样的语⾔. ⽽不是 "编程语⾔".

由于我们暂时不考虑国际化问题, 直接下⼀步即可.

6)选择 Qt 套件

默认只有第⼀个 "Desktop Qt 5.14.2 MinGW 64-bit",如果安装配置了多个 Qt 套件,就可以都选上。

Qt 套件是指 Qt 程序从编译链接到运⾏环境的全部⼯具和 Qt 类库的集合,对于 MinGW 版本 Qt 程序⽣ 成和调试,⾄少需要 MinGW 中的编译器 g++(⾃动调⽤链接器)、g++ 配套的基础库、调试器 gdb 还 有使⽤ MinGW 环境编译⽽成的 Qt 类库⾃⾝。默认情况下,在上⾯ Kit Selection ⾥选中全部套件。 

7)选择版本控制系统

点击 "下⼀步" 进⼊ 项⽬管理界⾯;

在项⽬管理界⾯可以设置作为⼦项⽬,以及加⼊版本控制系统管 理。

这两个功能暂时⽤不到,都⽤默认的 ,然后点击 "完成" 就好了。

3.4  观察项目运行结果

运行结果:应该是弹出一个空白的大框 

补充知识:

而我们上面的新创文件之所以运行就有结果,是因为我们在搭建项目的时候,QT就已经内置了一些通用的代码进去了。 


四、项目代码的讲解

4.1 widget.h介绍

1. 头文件保护(Header Guard)

首先我们看到头文件 ,这个通过宏定义来防止头文件重复包含,现在更多的是如下的方式。

  • 推荐使用 #pragma once 替代传统 #ifndef/#define 方式,确保头文件仅被包含一次

 2.Q_OBJECT 宏与信号槽机制

  • Q_OBJECT 是 Qt 内置宏,展开后生成支持信号槽的代码。

  • 若类需要使用 信号(Signals) 和 槽(Slots) 机制,必须在类声明中引入此宏。

当然此时大家只需要知道这是一个关于QT的核心机制,后面会有专门的讲解博客的。

3. Qt 类的头文件包含规则

  • Qt 类的头文件名通常与类名一致(如 QWidget 对应 <QWidget>)。

  • 某些头文件可能被间接包含(如通过其他头文件引入),无需显式包含。

  • 原则:直接使用 Qt 类,若编译报错“未定义”,再手动包含对应头文件。

4. Qt 对象树(Object Tree)

  • 数据结构:普通 N 叉树(非二叉树)。

  • 特性

    • 一个节点可有多个子节点。

    • 子节点自动由父节点管理(生命周期绑定)。

  • 应用:用于 Qt 对象的内存管理,父子关系通过 setParent() 或构造函数建立。

4.2 widget.cpp

  • ui_widget.h 是 Qt Designer 窗体文件(.ui)编译后生成的头文件,包含界面布局和控件定义。

这里就是QT为我们生成的界面类的定义。

4.3 widget.ui 

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>Widget</class><widget class="QWidget" name="Widget"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>600</height></rect></property><property name="windowTitle"><string>Widget</string></property><widget class="QWidget" name="formLayoutWidget"><property name="geometry"><rect><x>210</x><y>410</y><width>160</width><height>80</height></rect></property><layout class="QFormLayout" name="formLayout"/></widget><widget class="QWidget" name="gridLayoutWidget"><property name="geometry"><rect><x>160</x><y>370</y><width>160</width><height>80</height></rect></property><layout class="QGridLayout" name="gridLayout"/></widget></widget><resources/><connections/>
</ui>

 这里使用的xml写的界面,但是实际上在经过编译器运行后,仍然会生成对应的C++/C代码去执行生成操作。

 当然这里只是介绍了解一下而已,后面专门有介绍的。


总结:

恭喜你完成了第一讲的学习!通过本篇内容,你已经成功搭建了Qt开发环境,并运行了第一个Qt程序。虽然这看似简单,但却是开启Qt世界大门的关键一步。一个稳定的开发环境能让你在后续学习中事半功倍,避免因配置问题分散精力。

让我们在下一讲中,一起揭开Qt神秘而强大的面纱!🚀

http://www.xdnf.cn/news/10198.html

相关文章:

  • 做销售讲究接地气
  • 【Python-Day 20】揭秘Python变量作用域:LEGB规则与global/nonlocal关键字详解
  • 太阳诱电多层陶瓷电容器的优势和特点
  • springboot java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver应该如何解决
  • leetcode题解513:找树左下角的值(递归中的回溯处理)!
  • 【CF】Day70——Codeforces Round 896 (Div. 2) CD1 (排列 + 构造 | ⭐思维 + 数学)
  • 20250530-C#知识:抽象类、抽象方法、接口
  • nt!FsRtlFindLargeIndex函数分析计算在那个Mapping[(I)]数组中
  • 基于Java 实现 IM 业务回调
  • Java 之殇:从中流砥柱到“被温柔替代”
  • LeetCode Hot100(动态规划)
  • 04-redis-分布式锁-edisson
  • yum安装nginx后无法通过服务方式启动
  • 企业知识库问答系统避坑指南:检索优化与生成一致性解决方案
  • [ctfshow web入门] web80
  • 2.测试项目启动和研读需求文档
  • js 动画库、2048核心逻辑、面试题add[1][2][3]+4
  • Datatable和实体集合互转
  • 华锐视点助力,虚拟旅游绽放更璀璨光彩​
  • 图书管理系统的设计与实现
  • 北京大学肖臻老师《区块链技术与应用》公开课:06-BTC-网络
  • canoe 排查配置相关【graphics,capl】
  • Python基本运算符
  • python装饰器
  • DSP处理数字信号做什么用的?
  • Unsafe.putOrderedInt与Volatile
  • 驱动灯珠芯片LT3743手册理解
  • phpmyadmin
  • RTOS:启动调度器的作用(含源码逐行解读)
  • 微信小店推客系统达人用户管理的数据支持和便利