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; ?>
】
相关推荐
- Win10电脑怎么设置IP地址_Windows10
- Win11关机界面怎么改_Win11自定义关机画面
- 如何使用正则表达式批量替换重复的 *- 模式为固定
- Windows如何使用注册表查找和删除项?(reg
- 如何使用Golang进行HTTP服务性能测试_测量
- Win11更新后变慢怎么办_Win11系统更新后卡
- 怎么将XML数据可视化 D3.js加载XML
- Python与OpenAI接口集成实战_生成式AI
- LINUX如何删除用户和用户组_Linux use
- Win11怎么设置触控板手势_Windows11三
- Python与Docker容器化部署实战_镜像构建
- Win10任务栏天气和资讯怎么关闭 Win10禁用
- Win11怎么更改计算机名_Windows11系统
- XSLT怎么生成动态的HTML属性名和标签名
- Win11资源管理器卡顿怎么办 Win11文件资源
- Python脚本参数接收_sys与argparse
- Win11怎么关闭键盘按键音_Win11禁用打字声
- Python文件操作优化_大文件与流处理解析【教程
- Win10怎样清理C盘爱奇艺缓存_Win10清理爱
- 如何在Golang中处理JSON字段缺失_Gola
- 如何使用Golang处理网络超时错误_Golang
- Win11无法安装软件怎么办_Win11解除应用安
- php下载安装包怎么选_threadsafe与nt
- Win11怎么关闭自动更新 Win11永久关闭系统
- Python抽象类与接口设计_规范说明【指导】
- 如何使用Golang实现RPC序列化与反序列化_G
- Win11怎么解压RAR文件 Win11自带解压功
- Win11怎么关闭系统推荐内容_Windows11
- Mac如何备份到iCloud_Mac桌面与文稿文件
- php命令行怎么运行_通过CLI模式执行PHP脚本
- Win11怎么设置快速访问主页_Windows11
- Win11怎么关闭内容自适应亮度_Windows1
- Win10如何卸载预装Edge扩展_Win10卸载
- 如何在Golang中使用time处理时间_Gola
- Windows10如何更改桌面图标间距_Win10
- 如何在Golang中引入测试模块_Golang测试
- Win10怎么卸载爱奇艺_Win10彻底卸载爱奇艺
- c++中的CRTP是什么 c++奇异递归模板模式【
- Win10如何更改任务栏高度_Windows10解
- PHP主流架构怎么部署到Docker_容器化流程【
- Win11怎么开启专注模式_Windows11时钟
- 网站内页做seo排名怎么做?
- MAC如何启用访达侧边栏显示_MAC Finder
- Win10怎样清理C盘浏览器缓存_Win10清理浏
- Python日志系统设计与实现_高可观测性架构实战
- Win11输入法选字框不见了怎么办_Win11输入
- 如何使用Golang实现路由分组管理_Golang
- Win11怎么关闭粘滞键_彻底禁用Windows
- Win11怎么设置默认输入法 Win11固定中文输
- Win11声音忽大忽小怎么办 Win11音频增强功

QQ客服