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; ?>
】
相关推荐
- php订单日志怎么按金额排序_php按订单金额排序
- 为什么Go需要go mod文件_Go go mod
- Win11怎么更改系统语言为中文_Windows1
- c++ reinterpret_cast怎么用 c
- Win11怎么更改文件夹图标_自定义Win11文件
- Win10如何卸载WindowsDefender_
- Win11怎么关闭开机声音_Win11系统启动提示
- Django密码修改后会话失效的解决方案
- 用Python构建微服务架构实践_FastAPI与
- Windows电脑键盘突然失灵怎么办?(驱动与硬件
- Win11怎么设置系统还原_Windows11系统
- Win11蓝牙开关不见了怎么办_Win11蓝牙驱动
- 如何使用Golang实现RPC序列化与反序列化_G
- Win11怎么设置默认图片查看器_Windows1
- Win10系统怎么查看显卡温度_Win10任务管理
- c# 在高并发下使用反射发射(Reflection
- Win11资源管理器卡顿怎么办 Win11文件资源
- mac怎么安装adb_MAC配置Android A
- 如何在 Go 中正确测试带 Cookie 的 HT
- 企业SEO优化选择网站建设模板的技巧
- Linux如何安装JDK11_Linux环境变量配
- c++输入输出流 c++ cin与cout格式化输
- 如何在Golang中引入测试模块_Golang测试
- 如何使用Golang反射将map转换为struct
- Windows10如何删除恢复分区_Win10 D
- Win11怎么关闭自动调节屏幕亮度_Windows
- 如何在 Python 测试中动态配置 @backo
- Win11怎么设置开机问候语_自定义Win11锁屏
- Win10怎么关闭自动更新错误重启 Win10策略
- Mac怎么查看活动监视器_理解Mac进程和资源占用
- php增删改查报错1054怎么办_字段名错误排查修
- Windows怎样关闭开始菜单推荐广告_Windo
- 用lighttpd能运行php吗_lighttpd
- Python函数参数高级用法_默认值与可变参数解析
- Python装饰器复用技巧_通用能力解析【教程】
- php8.4如何配置ssl证书_php8.4htt
- php嵌入式多设备通信怎么实现_php同时管理多个
- Win10如何关闭安全中心所有通知 Win10禁用
- c++怎么操作redis数据库_c++ hired
- 如何使用Golang管理跨项目依赖_Golang多
- mac怎么安装字体_MAC添加第三方字体与字体册管
- 如何使用Golang table-driven f
- 如何在Golang中实现基础配置管理功能_Gola
- 如何在JavaScript中动态拼接PHP的bas
- 如何在同包不同文件中正确引用 Go 结构体
- Win10 BitLocker加密教程 Win10
- C++友元类使用场景_C++类间协作设计方式讲解
- Windows驱动无法加载错误解决方法_驱动签名验
- Win11怎么退出微软账户_切换Win11为本地账
- php怎么下载安装后设置错误日志_phpini l

QQ客服