# 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)
效果:
---
### 002_Dialog:在主窗口之外创建一个对话框
步骤:
[第2篇 Qt5基础(二)编写Qt多窗口程序](https://www.qter.org/portal.php?mod=view&aid=27)
效果:
---
### 003_LoginDialog:登录功能
正确的用户名:demo,正确的密码:demo123456
步骤:
[第3篇 Qt5基础(三)Qt登录对话框](https://www.qter.org/portal.php?mod=view&aid=29)
效果:
---
### 004_menu_logo:添加菜单栏和图标
* 步骤:
[第4篇 Qt5基础(四)添加菜单图标(使用Qt资源文件 )](https://www.qter.org/portal.php?mod=view&aid=31)
* 效果:

---
### 005_icon_and_layout:完整菜单栏和居中动态布局
* 步骤:
[第5篇 Qt5基础(五)Qt布局管理器](https://www.qter.org/portal.php?mod=view&aid=32)
* 效果:

---
### 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)
* 效果:
---
### 007_text_find:文本查找功能
* 步骤:
[第7篇 Qt5基础(七)实现Qt文本查找功能](https://www.qter.org/portal.php?mod=view&aid=34)
* 效果:

---
### 008_keyboard_mouse.md:键盘和鼠标功能
* 步骤:
[第9篇 Qt5基础(九)Qt键盘、鼠标事件的处理](https://www.qter.org/portal.php?mod=view&aid=36)
* 效果:

---
### 009_2D_painter.md:2D绘图
* 步骤:
[第11篇 Qt5之2D绘图(一)绘制简单图形](https://www.qter.org/portal.php?mod=view&aid=38)
* 效果:

---
### 010_image.md:图片绘制
* 步骤:
[第15篇 Qt5之2D绘图(五)绘制图片](https://www.qter.org/portal.php?mod=view&aid=42)
* 效果:

---
### 011_3D_painter:3D绘制
* 资料:
[Qt OPenGL 入门教程之五 基于QOpenGLWidget 实现3D效果](https://blog.csdn.net/p942005405/article/details/103739892)
* 效果

---
### 012_media_play:视频播放
* 步骤:
[Qt中嵌入视频并循环播放方法](https://blog.csdn.net/zhang669154/article/details/78781011)
* 效果:
---
## 三、多媒体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)
* 效果:

* 注意事项:
只能用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)
* 效果:

* 注意事项:
只能用Qt5.15.2编译,Qt6.2.1、 Qt6.1.3 和 Qt6.0.4都有multimedia模块的bug
---
```
……省略……
```
---