【QT】Qt从零入门指南:创建你的第一个GUI程序

Qt简介

Qt是一个跨平台的C++图形用户界面应用程序开发框架,由挪威Trolltech公司于1991年开发,现由The Qt Company(前身为Digia的Qt事业部)维护。它广泛应用于桌面、移动和嵌入式系统开发,支持Windows、Linux、macOS、Android、iOS等主流操作系统。

Qt开发环境

1. 开发套件组成

Qt开发套件包含:

  • Qt库(核心框架)

  • Qt Creator IDE

  • 编译器工具链

  • 调试器

  • 构建工具(qmake/CMake)

2. 集成开发环境(IDE)选择

Qt Creator(推荐)

  • Qt官方专用IDE,开箱即用

  • 内置可视化设计器(Qt Designer/Qt Quick Designer)

  • 完美支持Qt特性,无需额外配置

  • 适合初学者和Qt专业开发者

  • 注意:社区版可能存在一些小问题,但更新频繁

Visual Studio

  • 功能强大,适合大型C++项目

  • 需安装"Qt Visual Studio Tools"扩展(微软维护)

  • 商业项目中较常见,特别是Windows平台项目

  • 有预编译包简化配置

其他IDE

  • CLion:通过CMake支持Qt开发

  • VSCode:通过插件支持,配置较复杂

  • Eclipse:市场份额下降,仍有部分嵌入式开发者使用

3. 环境安装建议

初学者推荐方案:

  1. 下载Qt在线安装器(Qt Online Installer)

  2. 选择最新稳定版本

  3. 组件选择:

    • Qt Creator(必选)

    • MinGW编译器(Windows)

    • Qt核心模块

    • 示例和文档

Windows用户注意:

  • MinGW:开源GCC编译器,适合学习和小项目

  • MSVC:微软编译器,性能更好,适合商业项目

  • 可同时安装多个编译器版本

安装验证:

安装完成后,打开Qt Creator,创建默认的Widgets Application项目,能成功编译运行即表示环境配置正确。

4. 开发工作流程

  1. 创建项目:Qt Creator向导创建Qt Widgets或Qt Quick项目

  2. 界面设计:使用设计器拖拽或编写QML代码

  3. 编写逻辑:C++业务逻辑实现

  4. 构建运行:一键编译调试

  5. 发布部署:Qt自带部署工具

第一个程序

设计流程

在我们写第一个QT程序之前,我们先来熟悉一下QT开发的流程:

1.新建项目

点击New Project

2.选择模板

在这里我选择Qt Widgets Application作为模板。Qt Widgets Application是 Qt 框架中用于开发传统桌面图形界面应用程序的模板:

1.它基于 Qt Widgets 框架(Qt 的经典 UI 组件库)

2.支持通过拖放控件(如按钮、文本框)快速构建界面(使用 Qt Designer 可视化设计工具)

3.自动生成包含窗口的界面文件(.ui)和 C++ 代码文件(.cpp/.h)

4.采用界面与业务逻辑分离的设计模式,便于初学者理解和使用

为什么推荐初学者优先选择这个模板?

  1. 成熟稳定:作为 Qt 最成熟的开发模板,拥有最丰富的学习资源(教程多,资料多
  2. 原生体验:开发的应用程序能完美适配 Windows/macOS/Linux 系统风格(可移植
  3. 学习门槛低:
    • 可视化界面设计,减少 UI 代码编写
    • C++ 业务逻辑清晰直观
    • 特别适合开发办公工具、本地客户端等传统桌面软件

Qt Quick Application:用 "Qt Quick/QML" 框架,适合做炫酷的现代界面(比如手机 App、动画多的桌面端),但需要学 QML 语言,入门稍复杂。

Qt Console Application:无界面的控制台程序(只有命令行窗口),适合写纯逻辑的工具(比如后台脚本)。

3.命名,路径

在Qt Creator中创建新项目时,命名需遵循以下规范:

  1. 仅允许使用:字母、数字和下划线
  2. 必须以字母或下划线开头
  3. 禁止包含:空格、中文字符、特殊符号及连字符

创建路径时,路径名不要有中文。

4.构建系统选择

1. 新手推荐:qmake

优势说明: qmake作为Qt官方构建工具,与Qt Creator开发环境完美兼容。创建项目后仅需点击"运行"按钮即可自动完成编译过程,完全免除了复杂的配置工作。其配置文件(.pro)采用简洁直观的语法结构,特别适合作为Qt初学者的首选构建方案。

2. 其他选项适用场景

CMake

跨平台通用构建系统,适用于大型项目多语言混合开发 (如Qt + C++ + Python)。虽然功能强大,但配置文件(CMakeLists.txt)相对复杂,建议新手暂缓使用。

Qbs

Qt推出的新一代构建工具,编译速度优于qmake。但目前生态成熟度不及qmake和CMake,主流项目仍以前两者为主,而且用的人很少公司也没有怎么维护了。

总结:新手直接选择qmake即可,点击"下一步"继续。

5.父类选择

在Base Class(父类)选项中,需要选择主窗口的Qt Widgets基类类型。不同基类提供不同的窗口功能特性,具体说明如下:

QMainWindow详解

  • 带有菜单栏、工具栏和状态栏的主窗口基类
  • 适用于开发完整的桌面应用程序(如文本编辑器、浏览器等需要完整菜单系统的程序)

QWidget

  • 作为所有Qt控件的基类
  • 提供一个空白窗口(无菜单/工具栏)
  • 适合创建简单弹窗或自定义小控件

QDialog

  • 专为对话框设计的基类
  • 适用于临时交互窗口(如登录窗口、设置对话框)
  • 默认以模态方式运行(会阻止主窗口操作)

结构对比

  • QMainWindow包含:

    • 菜单栏(QMenuBar)
    • 工具栏(QToolBar)
    • 停靠窗口(QDockWidget)
    • 状态栏(QStatusBar)
    • 中央部件(Central Widget)
  • QWidget仅是一个空白画布,可以手动添加所需功能(更好上手)

学习路径建议

  1. 从QWidget开始:掌握基本布局和信号槽机制
  2. 学习QDialog:理解模态/非模态对话框
  3. 进阶QMainWindow:构建完整应用程序框架

对于初学者,建议直接选择QWidget作为父类进行基础学习。我们在这里选择QWidget,作为父类。

QT 基类一经选定,系统便会自动生成对应的头文件(.h)和源文件(.cpp),并预填充基础代码框架。对于初次接触 C++框架的开发者而言,这种自动化功能尤为便利 ----它免去了手动编写所有文件的繁琐过程,大大提升了开发效率。

6.国际化和本地化

我们保持默认就行。

7.编译环境选择

编译器我们选择MinGW(GCC for Windows) 安装的什么版本就选什么版本(我的是6.10.1)。如果以后要使用Visual Studio来开发可以选Microsoft Visual C++ 2022 ,它是微软官方推出的专业编译器(VS用的就是这个)。

Debug

包含完整调试信息,执行效率较低,支持调试功能,适用于开发阶段,生成的文件体积较大。

Release

经过优化编译,运行效率高,不支持调试,适用于产品发布,生成的文件体积较小。

性能分析版本Profile

包含性能分析数据,主要用于性能优化,初学者可暂不关注。

我们在这里选择Debug就行。

8.项目结构和设置版本控制

这一页是项目创建的总结页面,我们默认就行。

9.完成

到这里我们的项目就创建完了。且构建工具帮我们生成.h文件和.cpp文件和部分代码。

实现程序

QT事项程序有两种方式:1.图形化2.纯代码

图形化

双击widget.ui,我们会进入这个面板。

点击左侧的display Widgets中的Label

直接拖动到设计界面

双击就可以标签内容了

点击左下角的运行图标,并等待构建完成。

这样,我们就用QT实现了第一个程序

纯代码实现

关闭所有项目和程序,重复上述步骤创建一个新项目test2。

更改widget.cpp

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include<QLabel>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QLabel* label = new QLabel(this);//指向父节点
    label->setText("hello world!");
}

Widget::~Widget()
{
    delete ui;
}

直接运行

这样我们就通过纯代码的方式实现了程序。本文就到这里,下篇文章将解释为什么传this指针,为什么new这个对象没有手动释放内存以及各个文件的内容和联系。

相关推荐
AllinLin2 小时前
javaScript学习计划(Day26-30)
开发语言·javascript·学习
代码游侠2 小时前
应用——Linux Socket编程
运维·服务器·开发语言·笔记·网络协议·学习
ss2732 小时前
Java定时任务:ScheduledThreadPoolExecutor
开发语言·python
我可以将你更新哟2 小时前
【PyQT-4】QListWidget列表控件、QComboBox下拉列表控件、QTableWidget表格控件
开发语言·python·pyqt
TheSumSt2 小时前
Python丨课程笔记Part1:Python基础入门部分
开发语言·笔记·python·学习方法
superman超哥2 小时前
Rust 注释与文档注释:代码即文档的工程实践
开发语言·算法·rust·工程实践·rust注释与文档注释·代码即文档
DO_Community2 小时前
加速 JavaScript 开发:DigitalOcean 应用托管现已原生支持 Bun
开发语言·前端·javascript
lly2024062 小时前
ECharts 响应式
开发语言