news 2026/6/10 1:13:39

Qt学习第一个程序:Hello,World

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt学习第一个程序:Hello,World

本文将以Qt 5/6(通用步骤,两者无核心差异)、Qt Creator开发工具为例,完成经典的Hello,World程序,包含纯代码编写和UI拖拽两种方式,步骤详细且适合零基础入门,确保每一步都能落地执行。

前置准备

1. 安装Qt开发环境:需包含Qt Creator编辑器、对应版本的Qt库(如5.15.2/6.6.0)、MinGW编译器(推荐,无需额外配置)。

2. 验证环境:打开Qt Creator,无报错弹窗即表示环境正常。

方式一:纯代码编写(控制台版Hello,World)

适合理解Qt的程序入口、工程结构,无图形界面,运行后在控制台输出文字。

步骤1:新建Qt控制台工程

1. 打开Qt Creator,点击文件(F) → 新建文件或项目(N)。

2. 在弹出的窗口中,选择项目 → Application → Qt Console Application,点击选择(C)。

3. 工程命名:输入 HelloWorld_Console (建议英文,无空格/中文),选择工程保存路径,点击下一步。

4. 构建套件选择:勾选已安装的MinGW(如MinGW 8.1.0 64-bit),点击下一步。

5. 类信息:默认类名 Main 、基类 QCoreApplication ,无需修改,点击下一步。

6. 点击完成,自动生成控制台工程结构。

步骤2:编写核心代码

工程生成后,自动打开 main.cpp 文件,替换原有代码为以下内容(注释已标注核心逻辑):

// 引入Qt核心头文件,QCoreApplication是控制台程序的核心类,处理应用程序事件循环

#include <QCoreApplication>

// 引入输入输出头文件,用于控制台打印(Qt的qDebug替代C++的cout,跨平台性更好)

#include <QDebug>

int main(int argc, char *argv[])

{

// 创建Qt应用程序对象,argc和argv是命令行参数,Qt程序必须有且仅有一个该对象

QCoreApplication a(argc, argv);

// 控制台输出Hello,World,qDebug()自动换行,无需加\n

qDebug() << "Hello,World!";

// 启动应用程序的事件循环(控制台程序可省略,此处为规范写法,兼容Qt语法)

return a.exec();

}

步骤3:运行程序

1. 点击Qt Creator左上角构建按钮(锤子图标),或按快捷键Ctrl+B,编译工程(底部编译栏显示 0 errors, 0 warnings 即编译成功)。

2. 点击运行按钮(绿色三角图标),或按快捷键Ctrl+R,底部应用程序输出栏将显示: Hello,World! ,控制台版程序完成。

方式二:图形界面版Hello,World(带窗口/文字)

更贴合Qt的GUI开发特性,生成带窗口的程序,窗口中显示Hello,World文字,包含纯代码创建界面和UI拖拽两种子方式,推荐新手先学UI拖拽,快速感受Qt的可视化开发。

子方式1:UI拖拽版(可视化开发,无复杂代码)

步骤1:新建Qt Widgets工程

1. 点击文件(F) → 新建文件或项目(N),选择项目 → Application → Qt Widgets Application,点击选择(C)。

2. 工程命名: HelloWorld_GUI ,选择保存路径,点击下一步。

3. 构建套件勾选MinGW,点击下一步。

4. 类信息配置(核心):

- 类名:默认 MainWindow (主窗口类,可自定义如 HelloWindow )。

- 基类:选择 QMainWindow (带菜单栏/工具栏的主窗口,新手推荐),也可选择 QWidget (空白基础窗口)。

- 勾选创建界面(必须勾选,否则无UI编辑界面),点击下一步。

5. 点击完成,生成图形界面工程,自动打开UI编辑界面(右侧为控件栏,中间为窗口画布,左侧为对象树)。

步骤2:UI拖拽添加文字控件

1. 右侧控件栏,找到Display Widgets(显示控件)分类,选择QLabel(标签控件,用于显示文字/图片)。

2. 按住QLabel拖拽到中间的窗口画布中,松开鼠标,画布中出现一个默认文字为 TextLabel 的标签。

3. 双击画布中的 TextLabel ,进入编辑模式,删除原有文字,输入 Hello,World! ,按回车确认。

4. 可选:拖动标签边缘调整大小,或在右侧属性编辑器中修改文字样式:

- font :设置字体、字号(如宋体,20号)。

- alignment :设置文字居中(水平+垂直居中)。

- styleSheet :设置文字颜色(如 color: red; )。

步骤3:直接运行程序

无需编写任何代码,直接点击构建(Ctrl+B) → 运行(Ctrl+R),将弹出一个带窗口的程序,窗口中显示设置好的 Hello,World! 文字,图形界面版完成。

子方式2:纯代码创建图形界面(理解Qt界面底层逻辑)

基于上述Qt Widgets工程,不使用UI拖拽,纯代码创建窗口和标签,步骤如下:

步骤1:新建Qt Widgets工程(取消UI)

1. 按上述方式新建 HelloWorld_GUI_Code 工程,在类信息步骤中,取消勾选创建界面,点击完成。

2. 工程生成后,核心文件为 mainwindow.h (头文件)、 mainwindow.cpp (实现文件)、 main.cpp (程序入口)。

步骤2:编写头文件(mainwindow.h)

打开 mainwindow.h ,添加QLabel的头文件引入和声明,代码如下:

cpp

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include <QMainWindow>

// 引入QLabel头文件,使用标签控件

#include <QLabel>

class MainWindow : public QMainWindow

{

Q_OBJECT // Qt的元对象宏,必须有,支持信号与槽机制

public:

MainWindow(QWidget *parent = nullptr); // 构造函数

~MainWindow(); // 析构函数

};

#endif // MAINWINDOW_H

步骤3:编写实现文件(mainwindow.cpp)

打开 mainwindow.cpp ,在构造函数中创建QLabel并设置属性,代码如下:

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

{

// 1. 设置主窗口的标题和大小

this->setWindowTitle("Qt HelloWorld"); // 窗口标题

this->resize(400, 300); // 窗口大小:宽400像素,高300像素

// 2. 创建QLabel标签对象,父对象设为当前主窗口(自动随窗口显示/销毁)

QLabel *label = new QLabel(this);

// 3. 设置标签显示的文字

label->setText("Hello,World!");

// 4. 设置标签的大小和位置(x:100, y:100为左上角坐标,宽200,高50)

label->setGeometry(100, 100, 200, 50);

// 5. 可选:设置文字居中、字体

label->setAlignment(Qt::AlignCenter); // 文字水平+垂直居中

QFont font;

font.setFamily("宋体"); // 字体

font.setPointSize(20); // 字号

label->setFont(font);

}

MainWindow::~MainWindow()

{

// 父对象为MainWindow,Qt自动管理内存,无需手动释放label

}

步骤4:运行程序

构建(Ctrl+B)→ 运行(Ctrl+R),将弹出一个自定义标题、大小的窗口,窗口中显示居中的 Hello,World! 文字,纯代码图形界面完成。

核心知识点解析(新手必看)

1. Qt程序入口:所有Qt程序的入口都是 main() 函数,必须创建QApplication(图形界面)/QCoreApplication(控制台)对象,且仅有一个。

2. 事件循环: a.exec() 是Qt的事件循环入口,图形界面程序必须有,用于处理窗口的点击、刷新等事件;控制台程序可省略。

3. 跨平台性:上述代码无需修改,可在Windows、Linux、macOS上编译运行,Qt自动处理底层系统差异。

4. 内存管理:Qt中为控件设置父对象后,父对象销毁时会自动销毁子对象,无需手动 delete ,避免内存泄漏。

5. 核心头文件:

- QCoreApplication :控制台程序核心。

- QApplication :图形界面程序核心(继承自QCoreApplication,自动引入)。

- QLabel :标签控件,用于显示文字。

- QMainWindow/QWidget :窗口基类,所有图形界面都基于此。

常见问题排查

1. 编译报错 error: undefined reference to xxx :未勾选对应构建套件,或Qt库未正确安装,重新打开Qt维护工具安装对应库。

2. 运行无窗口/无输出:图形界面程序忘记创建应用程序对象,或未调用 exec() ;控制台程序未引入 QDebug 。

3. UI拖拽后运行无文字:未修改QLabel的默认文字,或控件被窗口边缘遮挡,调整控件位置。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:58:06

PyTorch中的unsqueeze函数详解:给张量增加维度

什么是unsqueeze函数&#xff1f;unsqueeze()函数的作用是在张量的指定位置插入一个维度&#xff0c;这个新维度的长度为1。基本用法1. 基本语法import torch# 创建一个一维张量 x torch.tensor([1, 2, 3, 4]) print(f"原始张量: {x}, 形状: {x.shape}") # torch.S…

作者头像 李华
网站建设 2026/6/6 7:17:39

SSM天美美容院管理系统dgbw1--程序+源码+数据库+调试部署+开发环境

本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;带论文文档1万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着生活水平的提高&#xff0c;美容行业迅速发展&#xff0c;成为现代人追求美丽和健康的重…

作者头像 李华
网站建设 2026/6/9 20:59:28

人才库管理系统的 AI 应用:人岗精准智能推荐的底层原理

在企业招聘与人才配置过程中&#xff0c;人岗错配、优质人才埋没、招聘效率低下等问题长期困扰着 HR 从业者。随着数字化转型的深入&#xff0c;人才库管理系统已成为企业盘活内部人才、优化招聘流程的重要工具&#xff0c;而 AI 技术的融入则让系统突破了传统筛选的局限。人才…

作者头像 李华