news 2026/4/3 3:21:03

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/3/13 1:57:27

如何在Java Controller中处理POST请求?

在Java Web开发中&#xff0c;处理HTTP POST请求并获取请求中的参数是一项常见任务。这通常是通过使用Servlet技术或者Spring框架来实现的。以下是两种常见框架&#xff08;Servlet和Spring MVC&#xff09;中处理POST请求参数的方法。 1. 使用Servlet如果你正在使用Servlet AP…

作者头像 李华
网站建设 2026/4/1 15:10:48

解锁触手可及的温暖:网易智企 x Wander Puffs AI 云游泡芙

Raingo、Bo与Mimi是生活在云栖之境的三位云游泡芙。话搭子Raingo读懂你的孤独&#xff0c;慢性子Bo稳住你的焦虑&#xff0c;开心果Mimi点亮你的自信。由上海零陆零贰数字科技有限公司&#xff08;以下简称“零陆零贰”&#xff09;出品的AIIP治愈系情感陪伴玩偶“Wander Puffs…

作者头像 李华
网站建设 2026/3/27 23:10:26

PHP在网页中如何实现视频大文件的秒传与切片分享?

重庆老码农的「百元预算大文件传输」解决方案 一、项目开场白 各位同行好&#xff01;老张我今年45岁&#xff0c;头发都快掉光了还在写代码。最近接了个「20G文件夹上传」的活儿&#xff0c;客户要求用原生JSPHP实现&#xff0c;预算100块还要7*24小时支持…&#xff08;掏出…

作者头像 李华
网站建设 2026/3/16 10:12:41

做了10000套板子,部分 LED 异常,太细节了。

近期&#xff0c;某工程师反馈他们生产的一批10000套板子中&#xff0c;出现了上百套LED工作异常的情况。具体表现为&#xff1a;板卡上有3个LED指示灯&#xff0c;正常上电后应全部点亮&#xff0c;但异常板子会随机出现某个LED不亮&#xff0c;而板子上的其他功能均正常。下图…

作者头像 李华
网站建设 2026/3/13 6:27:00

第2章Java基本语法(上): 变量与运算符--标识符 变量

2.2 标识符(Identifier)标识符&#xff1a; Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符 技巧&#xff1a;凡是自己可以起名字的地方都叫标识符。 定义合法标识符规则&#xff1a; 由26个英文字母大小写&#xff0c;0-9 &#xff0c;_或 $ 组成 …

作者头像 李华