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; ?>
】
相关推荐
- Windows10无法连接到Internet_Wi
- c++如何使用std::bind绑定函数参数_c+
- Windows蓝屏BAD_POOL_HEADER故
- Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数
- Python实现图数据库操作_Neo4j核心CRU
- Win11无法拖拽文件到任务栏怎么办_Win11开
- 如何在 Go 中正确反序列化多个同级 XML 元素
- 如何在Golang中实现文件下载_Golang文件
- VSC怎样用终端运行PHP_命令行执行脚本的步骤【
- Windows家庭版如何开启组策略(gpedit.
- mac本地php环境如何开启curl_curl扩展
- Python文本编码与解码_跨平台解析说明【指导】
- Windows10系统怎么查看系统版本_Win10
- 如何使用Golang处理静态文件缓存_提高页面加载
- c# 服务器GC和工作站GC的区别和设置
- 如何使用Golang实现错误包装与传递_Golan
- Win11怎么更改电脑密码_Windows 11修
- 如何用正则与预处理高效拦截带干扰符的恶意域名
- 如何解决Windows字体显示模糊的问题?(Cle
- Windows10系统怎么查看CPU核心数_Win
- Mac电脑进水了怎么办_MacBook进水后紧急处
- How to Properly Use NumPy
- Python网页解析流程_html结构说明【指导】
- 如何在Golang中使用log包输出不同级别日志_
- 如何用::实现单例模式_php静态方法与作用域操作
- 如何使用Golang实现云原生应用弹性伸缩_自动应
- Win11如何设置计划任务 Win11定时执行程序
- Python网络日志追踪_请求定位解析【教程】
- Mac如何开启夜览模式_Mac护眼模式设置与定时
- mac怎么看硬盘大小_MAC查看磁盘存储空间与文件
- Win11怎么开启游戏模式_Win11优化游戏帧数
- php能控制zigbee模块吗_php通过串口与c
- Win11怎么关闭自动更新 Win11永久关闭系统
- Win11怎么更改电脑名称_Windows 11修
- Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱
- Python变量绑定机制_引用模型解析【教程】
- php删除数据怎么软删除_添加is_del字段标记
- Win11如何连接Xbox手柄 Win11蓝牙连接
- Win11怎么更改文件夹图标_自定义Win11文件
- Mac系统更新下载慢或失败怎么办_解决macOS升
- Python多线程使用规范_线程安全解析【教程】
- php本地部署后数据库连接报错_1045acces
- Win11怎么设置组合键快捷方式_Windows1
- c++怎么编写动态链接库dll_c++ __dec
- Python高性能计算项目教程_NumPyCyth
- Python网络异常模拟_测试说明【指导】
- 新手学PHP架构总混淆概念咋办_重点梳理【教程】
- Win10电脑怎么设置网络名称_Windows10
- 如何在Golang中处理通道发送接收错误_防止阻塞
- Windows如何拦截2345弹窗广告_Windo

QQ客服