# Qt GUI从简单到复杂 **Repository Path**: tomithyyang/qt_gui_simple2complex ## Basic Information - **Project Name**: Qt GUI从简单到复杂 - **Description**: 注重于GUI的基础元素,用Qt从最简单的主界面到很复杂的综合页面进行演示。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 27 - **Created**: 2022-02-24 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 从零开始学习Qt GUI编程 |作者|日期| |---|---| |将狼才鲸|2021-11-23| * 注:所有的代码都是参考的网上的资料,有贴上源地址 * 编译环境1(003_GuiDisplay/下001~012cases期间): Win10 + Qt6.2.1(MSVC 2019 64-bit) + Qt Creator5.0.3 * 编译环境2(其它cases期间,特别是002_MultiMedia_VideoAudio/下多媒体demos的编译): Win10 + Qt5.15.2(MSVC 2019 64-bit) + Qt Creator5.0.3 --- * Gitee源码路径:[从零开始学习Qt GUI编程](https://gitee.com/langcai1943/qt_gui_simple2complex) * CSDN文章地址:[将狼才鲸](https://blog.csdn.net/qq582880551) * Bilibili视频地址:[才鲸嵌入式](https://space.bilibili.com/106424039) ## 一、目录结构 ``` $ tree . |-- backup // 待删的一些旧文件 |-- projects // 以后才会用到,对同一份代码有makefile、qt、visual studio三个工程 | |-- 001_HelloWorld_makefile | |-- 001_HelloWorld_qt | `-- 001_HelloWorld_vs |-- readme.md `-- source // 源码 |-- 001_HelloWorld /* Hello world */ | `-- hello_world.c |-- 002_MultiMedia_VideoAudio // 还未进行,演示如何使用音视频编解码器 |-- 001_pcm_audio_play /* PCM音频播放 */ | xxx_xxx | …… | `-- documents | `-- MultiMedia_VideoAudio.md `-- 003_GuiDisplay // 演示GUI |-- 001_Window /* 主窗口 + HelloWorld */ | |-- 001_Window.pro // Qt工程文件 | |-- documents // 该Demo存放文档路径 | | |-- 001_Window.md // 该Demo说明文档 | | `-- 001_Window.png // 该Demo演示效果的图片 | |-- main.cpp // 主程序,程序入口 | |-- mainwindow.cpp // 主窗口显示逻辑 | |-- mainwindow.h // 主窗口头文件 | `-- mainwindow.ui // 主窗口布局 |-- 002_Dialog /* 对话框 */ |-- 003_LoginDialog /* 登录功能 */ |-- 004_menu_logo /* 添加菜单栏和图标 */ |-- 005_icon_and_layout /* 完整菜单栏和居中动态布局 */ |-- 006_text_file_edit /* 记事本编辑功能 */ |-- 007_text_find /* 文本查找功能 */ |-- 008_keyboard_mouse /* 键盘和鼠标功能 */ |-- 009_2D_painter /* 2D绘图 */ |-- 010_image /* 图片绘制 */ |-- 011_3D_painter /* 3D三维绘制 */ |-- 012_media_play /* 视频播放 */ | xxx_xxx | …… `-- documents `-- GuiDisplay.md ``` ## 二、GUI Demo介绍 * qt_gui_simple2complex\source\003_GuiDisplay\下的GUI部分: ### 001_Window:创建一个主窗口 步骤: [第1篇 Qt5基础(一)Qt开发环境的搭建和hello world](https://www.qter.org/portal.php?mod=view&aid=25) 效果: image --- ### 002_Dialog:在主窗口之外创建一个对话框 步骤: [第2篇 Qt5基础(二)编写Qt多窗口程序](https://www.qter.org/portal.php?mod=view&aid=27) 效果: image --- ### 003_LoginDialog:登录功能 正确的用户名:demo,正确的密码:demo123456 步骤: [第3篇 Qt5基础(三)Qt登录对话框](https://www.qter.org/portal.php?mod=view&aid=29) 效果: image --- ### 004_menu_logo:添加菜单栏和图标 * 步骤: [第4篇 Qt5基础(四)添加菜单图标(使用Qt资源文件 )](https://www.qter.org/portal.php?mod=view&aid=31) * 效果: ![image](https://gitee.com/langcai1943/qt_gui_simple2complex/raw/develop/source/003_GuiDisplay/004_menu_logo/documents/004_menu_logo.gif) --- ### 005_icon_and_layout:完整菜单栏和居中动态布局 * 步骤: [第5篇 Qt5基础(五)Qt布局管理器](https://www.qter.org/portal.php?mod=view&aid=32) * 效果: ![image](https://gitee.com/langcai1943/qt_gui_simple2complex/raw/develop/source/003_GuiDisplay/005_icon_and_layout/documents/005_icon_and_layout.gif) --- ### 006_text_file_edit:记事本编辑功能 * 步骤: [第6篇 Qt5基础(六)实现Qt文本编辑功能](https://www.qter.org/portal.php?mod=view&aid=33) [新建的QT项目没有menubar、statusbar或者toolbar](https://blog.csdn.net/weixin_44338712/article/details/105421811) * 效果: image --- ### 007_text_find:文本查找功能 * 步骤: [第7篇 Qt5基础(七)实现Qt文本查找功能](https://www.qter.org/portal.php?mod=view&aid=34) * 效果: ![image](https://gitee.com/langcai1943/qt_gui_simple2complex/raw/develop/source/003_GuiDisplay/007_text_find/documents/007_text_find.gif) --- ### 008_keyboard_mouse.md:键盘和鼠标功能 * 步骤: [第9篇 Qt5基础(九)Qt键盘、鼠标事件的处理](https://www.qter.org/portal.php?mod=view&aid=36) * 效果: ![image](https://gitee.com/langcai1943/qt_gui_simple2complex/raw/develop/source/003_GuiDisplay/008_keyboard_mouse/documents/008_keyboard_mouse.gif) --- ### 009_2D_painter.md:2D绘图 * 步骤: [第11篇 Qt5之2D绘图(一)绘制简单图形](https://www.qter.org/portal.php?mod=view&aid=38) * 效果: ![image](https://gitee.com/langcai1943/qt_gui_simple2complex/raw/develop/source/003_GuiDisplay/009_2D_painter/documents/009_2D_painter.gif) --- ### 010_image.md:图片绘制 * 步骤: [第15篇 Qt5之2D绘图(五)绘制图片](https://www.qter.org/portal.php?mod=view&aid=42) * 效果: ![image](https://gitee.com/langcai1943/qt_gui_simple2complex/raw/develop/source/003_GuiDisplay/010_image/documents/010_image.png) --- ### 011_3D_painter:3D绘制 * 资料: [Qt OPenGL 入门教程之五 基于QOpenGLWidget 实现3D效果](https://blog.csdn.net/p942005405/article/details/103739892) * 效果 ![image](https://gitee.com/langcai1943/qt_gui_simple2complex/raw/develop/source/003_GuiDisplay/011_3D_painter/documents/011_3D_painter.png) --- ### 012_media_play:视频播放 * 步骤: [Qt中嵌入视频并循环播放方法](https://blog.csdn.net/zhang669154/article/details/78781011) * 效果: image --- ## 三、多媒体Demo介绍 * qt_gui_simple2complex\source\002_MultiMedia_VideoAudio\下的多媒体部分: ### 001_pcm_audio_play:PCM音频播放 * 步骤: [Qt播放PCM音频(裸流)文件的两种方法](https://blog.csdn.net/caoshangpa/article/details/51224678) [QT 用QAudio语音库实现音频信号的采集 以及发送到另一台电脑 播放](https://blog.csdn.net/hanzhen7541/article/details/98794555) [error: no member named 'setCodec' in 'TestNamespace::QAudioFormat'](https://bugreports.qt.io/browse/QTBUG-94182) * 效果: ![image](https://gitee.com/langcai1943/qt_gui_simple2complex/raw/develop/source/002_MultiMedia_VideoAudio/001_pcm_audio_play/documents/001_pcm_audio_play.png) * 注意事项: 只能用Qt5.15.2编译,Qt6.2.1、 Qt6.1.3 和 Qt6.0.4都有multimedia模块的bug --- ### 002_yuv_video_play:YUV视频播放 * 步骤: [qt采用opengl显示yuv视频数据](https://blog.csdn.net/su_vast/article/details/52214642) * 效果: ![image](https://gitee.com/langcai1943/qt_gui_simple2complex/raw/develop/source/002_MultiMedia_VideoAudio/002_yuv_video_play/documents/002_yuv_video_play.gif) * 注意事项: 只能用Qt5.15.2编译,Qt6.2.1、 Qt6.1.3 和 Qt6.0.4都有multimedia模块的bug --- ``` ……省略…… ``` ---