00-学习路径与环境搭建

Qt 入门实战教程 · 总览与环境搭建

目标:能独立写出带界面的小程序,理解 Qt 的核心机制。


一、学习路线总览

模块必学内容
C++ 回顾类与对象、继承多态、指针引用、STL 容器、智能指针、Lambda
Qt 基础QObject 体系、对象树、内存管理机制
核心机制信号与槽(Signal/Slot)、事件循环、事件过滤器
常用控件QWidget、QMainWindow、QDialog、布局管理(QHBoxLayout/QVBoxLayout/QGridLayout)
资源系统qrc 资源文件、qss 样式表(类似 CSS)
开发环境Qt Creator、qmake/CMake、qDebug 调试

练习项目

  • 记事本(QTextEdit + 菜单 + 工具栏 + 文件读写)
  • 计算器

二、开发环境搭建

2.1 安装 Qt Creator

  1. 访问 Qt 官网下载 Qt Online Installer(开源版免费)。
  2. 运行安装器,登录 Qt 账号(没有就注册一个)。
  3. 选择组件时,至少勾选:
    • Qt 6.x(推荐 LTS 版本,如 6.5 / 6.8)
      • MSVC 2019 64-bitMinGW 11.2 64-bit(Windows)
      • Desktop gcc 64-bit(Linux)
      • macOS(Mac)
    • Developer and Designer Tools
      • Qt Creator
      • CMake
      • Ninja
  4. 等待安装完成。

新手建议:Windows 下选 MinGW 套件,省去单独安装 Visual Studio 的麻烦。

2.2 验证安装

打开 Qt Creator → 工具 → 选项 → Kits,确认至少有一个可用的 Kit(编译器 + Qt 版本 + 调试器)。


三、构建系统:qmake 与 CMake

Qt 项目支持两种构建系统,新项目推荐 CMake,旧项目常见 qmake。

3.1 qmake(.pro 文件)

# hello.pro
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = hello
TEMPLATE = app

SOURCES += main.cpp \
           mainwindow.cpp

HEADERS += mainwindow.h

常用变量

  • QT +=:添加模块(如 widgetsnetworksql
  • SOURCES / HEADERS / FORMS / RESOURCES:源文件、头文件、ui 文件、资源文件
  • TARGET:生成的可执行文件名
  • TEMPLATE = app:应用程序;lib:库

3.2 CMake(CMakeLists.txt)

cmake_minimum_required(VERSION 3.16)
project(hello VERSION 1.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)   # 自动处理 Q_OBJECT 宏
set(CMAKE_AUTORCC ON)   # 自动处理 .qrc 资源
set(CMAKE_AUTOUIC ON)   # 自动处理 .ui 文件

find_package(Qt6 REQUIRED COMPONENTS Widgets)

add_executable(hello
    main.cpp
    mainwindow.cpp
    mainwindow.h
)

target_link_libraries(hello PRIVATE Qt6::Widgets)

三个 AUTO 开关是 CMake 写 Qt 的关键,开了之后 .qrc 和 .ui 会自动编译,不需要手动列。


四、qDebug 调试

qDebug() 是 Qt 的标准调试输出,比 std::cout 更方便,支持 Qt 类型直接打印。

4.1 基本用法

#include <QDebug>

/**
 * @brief 演示 qDebug 的各种用法
 */
void demoDebug()
{
    // 基础输出
    qDebug() << "Hello, Qt!";

    // 支持 Qt 类型
    QString name = "Tom";
    int age = 20;
    qDebug() << "Name:" << name << "Age:" << age;
    // 输出: Name: "Tom" Age: 20

    // 取消字符串引号
    qDebug().noquote() << "Name:" << name;
    // 输出: Name: Tom

    // 格式化输出(类似 printf)
    qDebug("Score: %d, Ratio: %.2f", 95, 3.14159);

    // 其他级别
    qInfo() << "普通信息";
    qWarning() << "警告";
    qCritical() << "严重错误";
    // qFatal("致命错误,会终止程序");
}

4.2 打印自定义类型

#include <QDebug>

/**
 * @brief 自定义坐标点
 */
struct Point {
    int x;
    int y;
};

/**
 * @brief 重载 qDebug 输出运算符,让 Point 可直接打印
 * @param debug qDebug 流
 * @param p 坐标点
 * @return qDebug 流(支持链式调用)
 */
QDebug operator<<(QDebug debug, const Point &p)
{
    debug.nospace() << "Point(" << p.x << ", " << p.y << ")";
    return debug.space();
}

// 使用
Point p{10, 20};
qDebug() << p;  // 输出: Point(10, 20)

4.3 在 Qt Creator 中查看

qDebug 输出会显示在 Qt Creator 底部的 应用程序输出 面板(快捷键 Alt+3)。


五、第一个 Qt 程序:Hello World

5.1 项目结构

hello/
├── CMakeLists.txt
└── main.cpp

5.2 main.cpp

#include <QApplication>
#include <QPushButton>
#include <QWidget>
#include <QVBoxLayout>
#include <QLabel>

/**
 * @brief 程序入口
 * @param argc 命令行参数个数
 * @param argv 命令行参数数组
 * @return 程序退出码
 */
int main(int argc, char *argv[])
{
    // 1. 创建 QApplication,管理应用程序生命周期和事件循环
    QApplication app(argc, argv);

    // 2. 创建主窗口(QWidget 是所有界面元素的基类)
    QWidget window;
    window.setWindowTitle("Hello Qt");
    window.resize(300, 200);

    // 3. 创建布局,让控件自动排列
    QVBoxLayout *layout = new QVBoxLayout(&window);

    // 4. 创建标签和按钮
    QLabel *label = new QLabel("Hello, Qt!", &window);
    label->setAlignment(Qt::AlignCenter);

    QPushButton *btn = new QPushButton("点我", &window);

    // 5. 信号与槽:点击按钮时修改标签文字
    QObject::connect(btn, &QPushButton::clicked, [label]() {
        static int count = 0;
        label->setText(QString("被点了 %1 次").arg(++count));
    });

    // 6. 把控件加入布局
    layout->addWidget(label);
    layout->addWidget(btn);

    // 7. 显示窗口
    window.show();

    // 8. 进入事件循环,程序阻塞在这里直到窗口关闭
    return app.exec();
}

5.3 编译运行

# 方式一:Qt Creator 中直接点左下角绿色三角形(运行)

# 方式二:命令行
mkdir build && cd build
cmake ..
cmake --build .
./hello          # Linux/macOS
# hello.exe      # Windows

运行效果:弹出一个窗口,有一行文字和一个按钮,每点一次按钮文字计数加一。


六、核心要点总结

  1. QApplication 是 Qt 程序的入口,必须在创建任何界面对象之前创建。
  2. app.exec() 启动事件循环,程序在此阻塞,处理鼠标、键盘、绘制等事件。
  3. 信号与槽 是 Qt 的核心通信机制,connect(sender, signal, receiver, slot)
  4. qmake 用 .pro,CMake 用 CMakeLists.txt,新项目优先 CMake。
  5. qDebug() 是最常用的调试手段,支持 Qt 类型直接输出。
  6. Qt 对象通过父子关系管理内存,子对象会随父对象自动释放(下一章详解)。

下一章:C++ 基础回顾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值