news 2026/5/1 10:50:10

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/4/23 17:23:40

互联网大厂Java求职面试实战:多技术栈与业务场景深度解析

互联网大厂Java求职面试实战&#xff1a;多技术栈与业务场景深度解析 本文通过一个企业协同与SaaS场景的面试故事&#xff0c;真实展现互联网大厂Java求职者谢飞机与严肃面试官的问答过程&#xff0c;涵盖Java SE、Spring Boot、微服务、数据库、缓存、消息队列、安全框架、AI等…

作者头像 李华
网站建设 2026/4/29 7:19:29

从 .env 到动态配置:前端工程的一次升级

点击上方 程序员成长指北&#xff0c;关注公众号 回复1&#xff0c;加入高级Node交流群 前言 很多前端和 Node.js 项目&#xff0c;配置管理几乎都是从环境变量开始的&#xff1a;.env、process.env、再配合一次部署。但当你需要临时关掉一个功能、调整接口限流、做灰度发布时&…

作者头像 李华
网站建设 2026/5/1 5:08:16

军工装备管理系统TinyMCE4导入PDF图纸出现字体缺失怎么办?

项目需求技术评估与实施方案 一、需求背景分析 作为北京某国企项目负责人&#xff0c;我们当前面临在企业网站后台管理系统中集成Word粘贴、文档导入和微信公众号内容处理功能的迫切需求。该需求源于政府项目对文档处理能力提升的要求&#xff0c;同时需要满足信创国产化环境…

作者头像 李华
网站建设 2026/4/29 10:41:09

告别杂乱!NAS 装个 Sun-Panel+cpolar,数据管理居然能这么省心

Sun-Panel 是一款主打可视化整合的私有云管理工具&#xff0c;核心功能是把 NAS、服务器、常用工具的访问入口收拢到统一面板&#xff0c;支持多账号权限隔离&#xff0c;还能自定义界面样式&#xff0c;适配 Windows、macOS、Linux 等多系统&#xff0c;甚至树莓派也能流畅运行…

作者头像 李华
网站建设 2026/4/28 0:41:55

互联网大厂Java面试:严肃面试官与搞笑程序员的对决222

场景&#xff1a; 在某互联网大厂的面试室&#xff0c;一位严肃的面试官正准备提问&#xff0c;而对面坐着一位看似紧张却又想显得轻松的程序员小张。 面试官&#xff1a;我们先来聊聊Java核心知识。第一个问题&#xff0c;Java中的JVM是如何管理内存的&#xff1f; 程序员小张…

作者头像 李华
网站建设 2026/4/29 19:34:51

深度测评 9个AI论文工具:本科生毕业论文写作全攻略

随着AI技术的不断进步&#xff0c;越来越多的学术写作工具被推向市场&#xff0c;为本科生撰写毕业论文提供了新的解决方案。然而&#xff0c;面对种类繁多的AI工具&#xff0c;如何选择真正适合自己需求的产品成为一大难题。为此&#xff0c;我们基于2026年的实测数据与用户反…

作者头像 李华