Qt 入门简洁笔记:从框架概念到开发环境搭建

目录

  • 前言
  • [一、Qt 框架概述](#一、Qt 框架概述)
    • [1.1 什么是 Qt](#1.1 什么是 Qt)
    • [1.2 Qt 的发展历程](#1.2 Qt 的发展历程)
    • [1.3 Qt 支持的平台](#1.3 Qt 支持的平台)
    • [1.4 Qt 版本与授权方式](#1.4 Qt 版本与授权方式)
    • [1.5 Qt 的优势](#1.5 Qt 的优势)
    • [1.6 Qt 的主要应用场景](#1.6 Qt 的主要应用场景)
    • [1.7 Qt 的成功案例](#1.7 Qt 的成功案例)
    • [1.8 Qt 的发展前景与就业方向](#1.8 Qt 的发展前景与就业方向)
  • [二、Qt 开发环境搭建](#二、Qt 开发环境搭建)
    • [2.1 常见开发工具](#2.1 常见开发工具)
    • [2.2 Qt SDK 的下载与安装](#2.2 Qt SDK 的下载与安装)
    • [2.3 环境变量配置](#2.3 环境变量配置)
  • [三、Qt Creator 初体验](#三、Qt Creator 初体验)
    • [3.1 Qt Creator 界面总览](#3.1 Qt Creator 界面总览)
    • [3.2 创建第一个 Qt 项目](#3.2 创建第一个 Qt 项目)
      • [1. 新建项目](#1. 新建项目)
      • [2. 设置项目名称与路径](#2. 设置项目名称与路径)
      • [3. 构建系统](#3. 构建系统)
      • [4. 选择基类](#4. 选择基类)
      • [5. 选择语言与套件](#5. 选择语言与套件)
    • [3.3 运行项目与构建结果](#3.3 运行项目与构建结果)
  • [四、第一个 Qt 程序:Hello World](#四、第一个 Qt 程序:Hello World)
    • [4.1 使用按钮实现](#4.1 使用按钮实现)
    • [4.2 使用标签实现](#4.2 使用标签实现)
  • 五、项目文件结构解析
    • [5.1 `.pro` 文件关键内容](#5.1 .pro 文件关键内容)
    • [5.2 main.cpp 说明](#5.2 main.cpp 说明)
  • [六、Qt 编程常见注意点](#六、Qt 编程常见注意点)
    • [6.1 命名规范](#6.1 命名规范)
    • [6.2 常用快捷键](#6.2 常用快捷键)
    • [6.3 帮助文档使用](#6.3 帮助文档使用)
    • [6.4 Qt 对象树机制](#6.4 Qt 对象树机制)
    • [6.5 Qt 坐标系统](#6.5 Qt 坐标系统)
  • 七、总结

前言

本文整理自大量网络资料以及社区内容,并结合个人学习理解,旨在帮助初学者快速了解 Qt 框架的基础知识、开发环境的搭建流程,以及 Qt Creator 的使用方法。


一、Qt 框架概述

1.1 什么是 Qt

Qt 是一个 跨平台的 C++ 图形用户界面(GUI)应用程序开发框架

它为开发者提供了创建高质量桌面、移动以及嵌入式界面的完整工具链。

Qt 的主要特点:

  • 完全面向对象,基于 C++ 开发;
  • 使用组件化设计,开发者可以通过拖拽和组合快速构建 UI;
  • 同时支持可视化操作和底层 C++ 编程。

简单来说,Qt 就像是 C++ 世界的"前端框架",让我们能方便地构建图形界面应用。

补充理解

Qt 的定位与 MFC(Windows)、GTK(Linux)或 Cocoa(macOS)类似,但它实现了真正的跨平台开发。使用相同代码,就能编译出 Windows、Linux、macOS、Android、iOS 等平台的应用。


1.2 Qt 的发展历程

  • 1991 年:由 Trolltech(奇趣科技)创建;
  • 1996 年:进入商业化阶段,成为 KDE 桌面环境的基础;
  • 2008 年:被诺基亚收购;
  • 2012 年:Digia 接手 Qt 开发;
  • 2014 年:Qt 5.3 发布,正式支持 iOS、Android、嵌入式平台;
  • 至今:Qt 6 已成为主流版本,但 Qt 5 依然在企业中广泛使用。

1.3 Qt 支持的平台

Qt 几乎支持所有主流系统:

  • Windows:XP、7、10、11 等;
  • Linux / Unix:如 Ubuntu、Solaris、FreeBSD;
  • macOS;
  • 嵌入式系统(Embedded Linux、Windows CE);
  • 移动平台:Android、iOS。

1.4 Qt 版本与授权方式

Qt 提供两种授权方式:

授权类型 特点
商业授权 需购买许可,可闭源开发,获得官方技术支持
开源授权 免费使用,需遵守 LGPL/GPL 协议

在学习阶段,使用 开源版本 即可。

当前 Qt 的最新版本是 Qt 6,但 Qt 5 依旧是多数教学与企业项目的标准版本。


1.5 Qt 的优势

  • 跨平台开发:一次编写,多处运行;
  • API 简洁,易于学习
  • 内存管理机制优化:对象树结构能减少手动释放;
  • 可视化设计器:支持拖拽式 UI 构建;
  • 生态完善:社区活跃,资料丰富;
  • 可用于嵌入式开发与工业界面系统

1.6 Qt 的主要应用场景

  • 桌面应用程序:如文件管理器、播放器、绘图工具;
  • 移动应用开发:支持 Android / iOS;
  • 嵌入式系统:车载娱乐、智能家居、医疗设备等;
  • 跨平台工具软件:如 IDE、仿真平台、科学可视化等。

1.7 Qt 的成功案例

应用 说明
KDE 桌面环境 Linux 桌面系统核心环境
WPS Office 国内常见办公软件
Skype 跨平台语音通话软件
Google Earth 三维地图可视化工具
VLC 开源媒体播放器
VirtualBox 免费虚拟机软件

这些软件都体现了 Qt 的跨平台能力与强大的界面表现力。


1.8 Qt 的发展前景与就业方向

行业方向:

  • 物联网与嵌入式系统;
  • 车载系统与自动驾驶;
  • 工控与智能终端;
  • 跨平台桌面工具;
  • 教育与仿真可视化系统。

就业分析:

Qt 工程师需求稳定增长。掌握 Qt 开发能力的工程师,通常能在嵌入式、车载 UI、桌面应用等领域获得较高薪资。


二、Qt 开发环境搭建

2.1 常见开发工具

Qt 支持多种 IDE(集成开发环境),常见有:

  1. Qt Creator
    官方推荐的轻量级 IDE,内置 UI 设计器、调试器和构建系统。
  2. Visual Studio
    功能强大,可通过插件支持 Qt 开发。
  3. Eclipse
    通过插件支持 Qt,但较少使用。

建议初学者使用 Qt Creator,它原生支持 Qt 工程结构,操作直观,适合入门。


2.2 Qt SDK 的下载与安装

  1. 打开官网或镜像源:

  2. 选择合适版本(推荐 5.14 或以上);

  3. 安装时注意事项:

    • 路径中不要有中文;
    • 可断网安装以跳过登录;
    • 可选择完整组件或仅 Qt Creator。

2.3 环境变量配置

为了在命令行中直接使用 Qt 工具,需要将 Qt 的 bin 目录添加到系统环境变量 PATH 中。

作用说明:

系统在执行命令时,会自动在 PATH 指定的路径中查找可执行文件,这样你就可以在任意目录下使用 qmakedesigner 等命令。


三、Qt Creator 初体验

3.1 Qt Creator 界面总览

Qt Creator 的主界面由以下部分组成:

  • 菜单栏:新建/构建/调试等功能;
  • 模式栏:欢迎、编辑、设计、调试、项目、帮助;
  • 构建栏:包含运行、调试、构建按钮;
  • 输出窗格:查看编译、运行、调试输出;
  • 左侧边栏:项目文件结构、类视图、Git 分支等。

3.2 创建第一个 Qt 项目

1. 新建项目

选择:
文件 -> 新建文件或项目 -> Application -> Qt Widgets Application

2. 设置项目名称与路径

建议路径不要含中文或空格。

3. 构建系统

默认为 qmake ,按自己的需求选择。

Qt 也支持 CMake,但对于初学者,qmake 更简洁。

4. 选择基类

  • QWidget:最基础的窗口;
  • QMainWindow:带菜单、工具栏的主窗体;
  • QDialog:对话框类。

5. 选择语言与套件

语言指界面语言(非编程语言),可保留默认。

套件(Kit)选择已安装的 Desktop Qt 版本。

这里的套件取决于电脑安装了哪个版本。如果安装了多个版本就按需选择合适的。

部分版本的Qt creator有这个界面:

是询问是否需要设置版本控制器,如果勾选会自动生成一份.gitignore文件,看个人需求进行选择。

新手可以默认不勾选。


3.3 运行项目与构建结果

点击左下角的"运行"按钮(或快捷键 Ctrl+R),Qt Creator 会自动构建并运行项目,出现一个空白窗口即表示环境配置成功。


四、第一个 Qt 程序:Hello World

4.1 使用按钮实现

widget.ui 中拖入一个 PushButton ,设置文本为 "Hello Qt"。

点击运行,即可看到窗口中的按钮。

4.2 使用标签实现

拖入一个 Label 控件,将文本改为 "Hello World"。

构建运行后,就完成了最基本的 Qt 界面程序。


五、项目文件结构解析

文件 说明
.pro 项目配置文件,用于生成 makefile
main.cpp 程序入口
widget.h / widget.cpp 窗口类定义与实现
widget.ui UI 界面文件(XML 格式)

5.1 .pro 文件关键内容

pro 复制代码
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = QtFirst
TEMPLATE = app
SOURCES += main.cpp \
           widget.cpp
HEADERS += widget.h

其中:

  • QT += widgets 表示项目使用了 Qt 的 Widgets 模块;
  • TEMPLATE = app 表示是一个应用程序;
  • SOURCESHEADERS 分别列出源码与头文件。

5.2 main.cpp 说明

cpp 复制代码
#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

其中:

  • QApplication 管理应用生命周期;
  • w.show() 显示主窗口;
  • a.exec() 启动事件循环。

六、Qt 编程常见注意点

6.1 命名规范

  • 类名:首字母大写(如 MainWindow);
  • 变量名、函数名:小写开头,驼峰命名(如 openFile())。

6.2 常用快捷键

操作 快捷键
运行程序 Ctrl + R
编译项目 Ctrl + B
注释/取消注释 Ctrl + /
查找 Ctrl + F
自动对齐 Ctrl + I
切换 .h/.cpp F4

6.3 帮助文档使用

不要依赖中文文档,Qt 官方英文文档清晰且权威

按下 F1 可直接打开光标所在类或函数的帮助页面。


6.4 Qt 对象树机制

Qt 的对象系统基于 QObject 树结构

  • 创建对象时可以指定父对象;
  • 父对象析构时,会自动释放所有子对象;
  • QWidget 继承自 QObject,因此 UI 控件之间也具备这种关系。

小结:

这种机制简化了内存管理,但注意不要让栈对象互相持有父子关系,否则可能出现重复析构的问题。


6.5 Qt 坐标系统

  • 坐标原点为左上角;
  • x 轴向右增加,y 轴向下增加;
  • 子控件的坐标总是相对于父控件而言。

七、总结

Qt 是一个成熟、稳定且强大的 C++ 应用开发框架。

它不仅能让你轻松构建桌面 GUI 程序,还能延伸到嵌入式系统、移动端和车载界面开发。

对于刚入门 Qt 的学习者,可以按以下路线学习:

  1. 了解 Qt 框架与信号槽机制;
  2. 熟悉 Qt Creator 开发流程;
  3. 学习常见控件与 UI 设计;
  4. 了解项目文件结构与构建系统;
  5. 进阶学习 QMainWindow、QDialog、QWidget 的关系;
  6. 探索 QML 与 Qt Quick 模块。

学习建议

Qt 的核心在于「对象模型 + 信号槽机制 + 跨平台构建系统」。

只要你熟悉 C++,学习 Qt 会是一种非常高效且愉快的体验。


免责声明

本文内容整理自学习笔记及网络资料,仅用于学习与交流目的。

文中涉及的文字、图片及部分资料参考自 Qt 官方文档、社区资源及网络公开资源,版权归原作者所有。

若内容存在疏漏或错误,欢迎读者指出并共同探讨。

本文不代表任何官方立场,也不对因使用本文内容而导致的任何后果负责。

封面图来源于网络,如有侵权,请联系删除!

相关推荐
zzzsde3 小时前
【C++】stack和queue:优先级队列的使用及底层原理
开发语言·c++
让我们一起加油好吗3 小时前
【数论】费马小定理
c++·算法·数论·1024程序员节·费马小定理·逆元
烛阴3 小时前
循环背后的魔法:Lua 迭代器深度解析
前端·lua
是苏浙3 小时前
零基础入门C语言之操作符详解2
c语言·开发语言
元拓数智3 小时前
现代前端状态管理深度剖析:从单一数据源到分布式状态
前端·1024程序员节
mapbar_front3 小时前
Electron 应用自动更新方案:electron-updater 完整指南
前端·javascript·electron
m0_748233644 小时前
单调队列【C/C++】
c语言·c++·算法·1024程序员节
总有刁民想爱朕ha4 小时前
银河麒麟v10批量部署Python Flask项目小白教程
开发语言·python·flask·银河麒麟v10
天一生水water4 小时前
three.js加载三维GLB文件,查看三维模型
前端·1024程序员节