C++如何使用Qt创建第一个GUI窗口?(入门教程)
技术百科
穿越時空
发布时间:2026-01-01
浏览: 次 用Qt创建首个GUI窗口需三步:初始化QApplication、定义继承QMainWindow的窗口类、调用show()显示窗口;需正确链接Qt6::Widgets模块并运行CMake构建。
用Qt创建第一个GUI窗口,核心是初始化应用、定义窗口类、显示窗口三步。不需要复杂配置,只要环境已安装Qt(推荐Qt 6 + CMake),就能快速跑起来。
1. 创建基础项目结构
新建一个空目录,比如 helloqt,在里面创建两个文件:
- main.cpp:程序入口,负责启动应用和显示窗口
-
mainwindow.h 和 mainwindow.cpp:自定义窗口类(继承
QMainWindow)
确保你的构建系统(如CMakeL
ists.txt)已正确链接 Qt6::Widgets 模块。
2. 编写主窗口类(mainwindow.h / mainwindow.cpp)
在 mainwindow.h 中声明窗口类:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #includeclass MainWindow : public QMainWindow { Q_OBJECT // 必须添加,支持信号槽机制 public: MainWindow(QWidget *parent = nullptr); }; #endif // MAINWINDOW_H
在 mainwindow.cpp 中实现构造函数(可先不写内容,让窗口空白显示):
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(400, 300); // 设置初始大小
setWindowTitle("Hello Qt!"); // 设置窗口标题
}
3. 编写 main 函数并运行
在 main.cpp 中写启动逻辑:
#include#include "mainwindow.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建应用对象(必须) MainWindow window; // 创建窗口实例 window.show(); // 显示窗口(关键!不调用就不会出现) return app.exec(); // 启动事件循环(保持程序运行) }
注意:show() 不能省略;exec() 是阻塞调用,负责处理鼠标、键盘等事件。
4. 构建与运行(以CMake为例)
在项目根目录写一个简版 CMakeLists.txt:
cmake_minimum_required(VERSION 3.16) project(helloqt) find_package(Qt6 REQUIRED COMPONENTS Widgets) set(CMAKE_CXX_STANDARD 17) add_executable(helloqt main.cpp mainwindow.cpp) target_link_libraries(helloqt Qt6::Widgets)
终端中依次执行:
mkdir build && cd build-
cmake ..(确保已配置好Qt6路径) cmake --build .-
./helloqt(Linux/macOS)或helloqt.exe(Windows)
看到标题为 “Hello Qt!” 的空白窗口,说明成功了。
# ai
# 就能
# 第一个
# windows
# 不需要
# 为例
# 自定义
# 三步
# 首个
# app
# 鼠标
# mac
# 在里面
# win
# linux
# macos
# cos
# c++
# 构造函数
# 事件
# red
# 继承
# 不写
# qt
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- 如何在 Python 中将 ISO 8601 时间
- C++ static_cast和dynamic_c
- 如何在Golang中捕获HTTP服务器错误_Gol
- Windows10电脑怎么设置电源按钮_Win10
- Drupal 中 HTML 链接被重复转义导致渲染
- php接口返回数据乱码怎么办_php接口调试编码问
- Python性能剖析高级教程_cProfileLi
- C++如何获取CPU核心数?(std::threa
- Windows10如何更改鼠标图标_Win10鼠标
- Win10怎么创建桌面快捷方式 Win10为应用创
- Linux怎么设置磁盘配额_Linux系统Quot
- LINUX如何删除用户和用户组_Linux use
- 如何使用 Python 合并文件夹内多个 Exce
- 微信里的php文件怎么变mp4_微信接收php转m
- php下载安装后swoole扩展怎么安装_异步框架
- 如何在 Go 开发中正确处理本地包导入与远程模块路
- php修改数据怎么批量改状态_批量更新status
- Win11怎么打开注册表_Windows 11注册
- Win11怎么关闭触控板_Win11笔记本禁用触摸
- C++友元类使用场景_C++类间协作设计方式讲解
- Mac怎么给文件夹加密_Mac创建加密磁盘映像教程
- PHP主流架构怎么集成Redis缓存_配置步骤【方
- Linux如何申请SSL免费证书_Linux下Ce
- c++20的std::format怎么用 比pri
- php条件判断怎么写_ifelse和switchc
- Win10如何备份驱动程序_Win10驱动备份步骤
- Mac如何将HEIC图片格式转为JPG_Mac批量
- Win11怎么开启专注模式_Windows11时钟
- 如何在Golang中编写端到端测试_Golang
- Python文本编码与解码_跨平台解析说明【指导】
- 如何将文本文件中的竖排字符串转换为横排字符串
- Windows10怎么备份注册表_Windows1
- Windows10如何彻底关闭自动更新_Win10
- Python大文件处理策略_内存优化说明【指导】
- Win11怎么关闭资讯和兴趣_Windows11任
- Win11怎么设置开机问候语_自定义Win11锁屏
- MAC如何修改默认应用程序_MAC文件后缀关联设置
- 如何在Golang中配置代码格式化工具_使用gof
- Windows Defender扫描失败怎么办_安
- Win11怎样安装钉钉客户端_Win11安装钉钉教
- Windows11怎样开启游戏模式_Windows
- 如何在 ACF 中正确更新嵌套多层的 Group
- MAC如何设置网卡MAC地址克隆_MAC终端修改物
- c++获取当前时间戳_c++ time函数使用详解
- Mac如何查看电池健康百分比_Mac系统信息电源检
- 如何在JavaScript中动态拼接PHP的bas
- Windows 11如何查看系统激活密钥_Wind
- Windows服务启动类型恢复方法_错误修改导致的
- Win11怎么设置开机密码_Windows11账户
- 如何使用Golang匿名函数_快速定义临时函数逻辑

QQ客服