惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
V
V2EX
爱范儿
爱范儿
Last Week in AI
Last Week in AI
美团技术团队
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
Security Latest
Security Latest
C
Cybersecurity and Infrastructure Security Agency CISA
Know Your Adversary
Know Your Adversary
I
Intezer
K
Kaspersky official blog
阮一峰的网络日志
阮一峰的网络日志
大猫的无限游戏
大猫的无限游戏
T
Tenable Blog
AWS News Blog
AWS News Blog
小众软件
小众软件
博客园 - 司徒正美
Cyberwarzone
Cyberwarzone
NISL@THU
NISL@THU
博客园 - 三生石上(FineUI控件)
C
CERT Recently Published Vulnerability Notes
博客园 - 聂微东
量子位
有赞技术团队
有赞技术团队
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Secure Thoughts
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
L
Lohrmann on Cybersecurity
P
Palo Alto Networks Blog
P
Privacy International News Feed
L
LINUX DO - 最新话题
博客园 - Franky
雷峰网
雷峰网
月光博客
月光博客
Hacker News: Ask HN
Hacker News: Ask HN
Forbes - Security
Forbes - Security
博客园 - 【当耐特】
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - lzhdim

雷柏VT3s MAX鼠标评测:中小手型用户也没有被遗忘 顶尖性能的小号电竞鼠标来了 JavaScript 中的原型与继承 1分钟查清局域网所有IP 20260714 - 个人小作品更新 WorkBuddy 完整教程手册 专为AI而生的企业级QLC SSD!长江存储PE501 61.44TB评测:超过1PB的写入测试 32GB显存才是第一生产力!英特尔锐炫 Pro B70评测:中小企业AI降本神器 JavaScript中的this关键字 C#开发的PopoSaver泡泡屏保应用 - 开源研究系列文章 - 个人小作品 6天不间断测试告诉你到底有多省电!米家空调巨省电大1.5匹评测:制冷峰值功率不超过500W 三倍双摄加持 + D-Log 2 曲线!大疆DJI OSMO Pocket 4P全面评测:补齐短板,化身口袋电影机 晶栈4.0闪存立威!长江存储致态TiPro9000 2TB SSD评测:缓外写入超4GB/s独一档 C# 多线程同步机制详解:原理、使用与性能对比 JavaScript作用域与闭包讲解 最受欢迎的 10 大免费 AI 工具 六种AI生意,从月入一万到月入十万 5个国产大模型实测对比2026:DeepSeek、Kimi、豆包、通义、智谱哪个好用 豆包、元宝、千问、Kimi、DeepSeek,这么多AI软件,到底该用哪个? 微软免费开源了一个 Linux 操作系统,没错!是微软出品 一次看懂5种咖啡冲煮方式:意式、手冲、法压、冷萃、摩卡壶到底有什么区别 120个 实用CSS 技巧汇总合集 JavaScript运算符与表达式详解 C#开发的ScreenSaver屏保应用 - 开源研究系列文章 - 个人小作品 WinForm 中跨线程操作 UI 的解决方案 JavaScript变量与数据类型详解 苹果良心!iOS 27适配设备公布:30款机型 7年前的iPhone 11还能升级 10个不该免费的GitHub神级项目 JavaScript语言全面概述:从历史到现代实践 一张图看懂常见咖啡 C盘空间多出来4GB:谷歌服软 Chrome本地AI大模型可禁用、删除了 96GB显存运行230B大模型!七彩虹灵创K16笔记本评测:160W性能释放 AMD锐龙AI Max+ 395加持全能移动AI工作站 AI PC最强存储搭档!雷克沙NM1090 PRO 8TB固态评测:14400MB/s满速不缩水 C#已经不是当年的C#了——我用它写了个微秒级数据库引擎 EasyTool:轻量全能的 .NET 工具类库 SQL 入门 17:MySQL 数据类型:从字符串到 JSON 的全面解析 SQL 入门 16:SQL 事务隔离级别与死锁解析(易懂) 原相3955XM+TL3228主控!小米电竞鼠标2全面评测:原生双8K究竟有多强 PCIe 4.0火力全开:闪迪奥丁马仕GX 7100 NVMe SSD上手 超乎预料的千元级电竞主板!七彩虹iGame B850M Ultra-OC V14主板评测 SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题 名人 - 我的闪存 C#性能优化技巧 SQL 入门 14:SQL 触发器与事件:自动化数据处理 38个实用的JavaScript 技巧 一款基于 .Net WinForm 开发的节点编辑器,纯 GDI 实现,体积仅 100+Kb Masuit.Tools:这个 C# 工具库 SQL 入门 13:SQL 存储过程与函数:封装逻辑与参数处理 49个 JavaScript 代码快捷技巧,让你在 2026 年成为代码高手 20260503 - 个人小作品更新 SQL 入门 12:SQL 视图:创建、修改与可更新视图 C#如何实现Windows系统桌面截图功能... 6999元AMD新旗舰首测!锐龙9 9950X3D2性能解禁:这颗U根本不是给游戏玩家造的 SQL 入门 11:日期时间格式化、IF、CASE的使用 基于C#的校时类库的实现及使用 - 开源项目研究文章
C++图形用户界面开发入门
lzhdim · 2026-06-11 · via 博客园 - lzhdim

图形用户界面(GUI)是现代软件应用程序的重要组成部分。C++作为一种强大的编程语言,提供了多种库和框架来帮助开发者创建图形用户界面。在本篇文章中,我们将介绍如何使用Qt框架进行C++ GUI开发,并通过一个简单的示例来演示基本的操作。

Qt是一个跨平台的应用程序开发框架,广泛用于开发GUI应用程序。它提供了一整套工具和库,使得创建复杂的用户界面变得更加简单。Qt支持多种操作系统,包括Windows、macOS和Linux。

在开始之前,你需要安装Qt SDK。可以从官方网站下载并按照说明进行安装。在安装过程中,请确保选择了适合你操作系统的版本以及所需的组件。

打开已安装的 Qt Creator,这是一个集成开发环境(IDE),专为使用 Qt 开发而设计。

  1. 点击“文件” -> “新建文件或项目”。
  2. 在弹出的窗口中选择“应用程序”下的“Qt Widgets 应用程序”,然后点击“下一步”。
  3. 输入项目名称和保存路径,然后点击“下一步”。
  4. 根据提示选择合适的构建套件,通常默认选项即可,然后点击“完成”。

生成的新项目包含以下主要文件:

  • main.cpp:程序入口点。
  • mainwindow.ui:使用 Qt Designer 创建 UI 的文件。
  • mainwindow.h 和 mainwindow.cpp:主窗口类定义及实现。

我们将创建一个简单的窗口,其中包含一个按钮,当按钮被点击时,会显示一条消息。

双击 mainwindow.ui 文件以打开 Qt Designer。在设计视图中:

  1. 从左侧的小部件箱中拖放一个 QPushButton 到主窗口上。
  2. 在右侧属性编辑器中,将按钮文本更改为 "Click Me" 并设置对象名称为 "myButton"。

在 mainwindow.h 中添加信号与槽机制,以便处理按钮点击事件:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line#ifndef MAINWINDOW_H#define MAINWINDOW_H
#include <QMainWindow>#include <QMessageBox>
QT_BEGIN_NAMESPACEnamespace Ui { class MainWindow; }QT_END_NAMESPACE
class MainWindow : public QMainWindow {    Q_OBJECT
public:    MainWindow(QWidget *parent = nullptr);    ~MainWindow();
private slots:    void on_myButton_clicked(); // 声明槽函数
private:    Ui::MainWindow *ui;};
#endif // MAINWINDOW_H

在 mainwindow.cpp 中实现按钮点击后的行为:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line#include "mainwindow.h"#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)    : QMainWindow(parent), ui(new Ui::MainWindow) {    ui->setupUi(this);
    // 将信号连接到槽函数    connect(ui->myButton, &QPushButton::clicked, this, &MainWindow::on_myButton_clicked);}
MainWindow::~MainWindow() {    delete ui;}
// 槽函数实现void MainWindow::on_myButton_clicked() {    QMessageBox::information(this, "Message", "Hello, World!");}

完成上述步骤后,可以编译并运行你的项目。在菜单栏中选择 “构建” -> “构建解决方案”,然后选择 “运行”。你应该会看到带有按钮的新窗口。当你单击该按钮时,会弹出一条消息框显示 “Hello, World!” 。

本文介绍了如何使用C++和Qt框架创建基本图形用户界面应用程序。从安装到创建第一个简单应用,我们涵盖了必要步骤。这只是GUI编程的一小部分,随着对更多控件、布局管理以及事件处理机制深入了解,你将能够构建更复杂、更美观的软件应用。如果你想进一步学习,可以参考官方文档或其他相关教程。希望这篇文章能帮助你迈出C++ GUI开发之路的一步