当前位置: 首页 > news >正文

C++ Qt零基础入门进阶与企业级项目实战教程与学习方法分享

  Qt是一个卓越的客户端跨平台开发框架,可以在Windows、Linux、macOS进行客户端开发,无缝切换,一统三端;当然除了桌面端,在移动端的早期,Qt也展现了其多才多艺,在Android和ios也可以使用Qt编写app, 近些年移动端的蓬勃发展,大浪淘沙,Qt已退出移动端开发的舞台,但是在桌面端开发,尤其是跨平台方面,Qt是不二选择。

​  Qt开发灵活多变,可以选用C++或Python,但要说到企业级桌面端项目,尤其对性能有要求的桌面端项目,C++无疑是首选。由于历史原因,很多第三方库都是使用C/C++编写,这些第三方库也经过了数十年的使用与验证,程序员在选择时不存在顾虑,linux、windows的系统接口则全是C/C++,使用C++可以更好的与第三方库、操作系统进行交互,同时C++的性能也高于其它语言,因此C++无疑是大多数企业桌面端项目的首选。Qt由于其较好的封装,使用简单,有着web的ui效果,同时也可以与web混合开发,或者把CEF集成到Qt, 实现更高效的c++ qt web混合开发效率,因此使用C++ Qt作为桌面端项目技术选型是很好的选择。例如腾讯会议、剪映、亿图MindMaster、优酷(2022年3月之前),斗鱼,AutoCAD等大型桌面端软件都是使用C++ Qt进行开发。

​  近年来,Qt更是热情推崇QML开发。这给许多开发者带来了疑虑,让很多Qt开发者站在了十字路口,选择QML还是QWidget?是走向PyQt,还是坚守C++ Qt,或是探索QML的新境界?学习QWidget是否过时了,企业里用qml多还是QWidget多;是学习PyQt,还是学习C++ Qt,还是学习qml;学习Qt,操作系统该怎么选,是在linux里学习,还是windows里学习,还是在mac里学习;由于C++开发环境的多样性,学习Qt该用哪个IDE,是使用QtCreator,还是使用VS Code, 还是使用VS2022;为什么Qt环境经常出问题,报错,无法编译,常量换行符,中文乱码,许多人感到困惑和沮丧。

​  学C++ Qt开发,需要先学习C++, 再学习Qt,然后做项目。很多人觉得C++难学,被一些视频,文章误导,直接被劝退。C++难,但并不是学不会,我当初也很想放弃C++, 但是我坚持下来了。

  这些年通过写博客,录教程,在qq群里和大家交流,了解到大家对Qt开发的困惑,经过多年的深入研究以及项目应用,我录制了三套视频教程,构建了一条C++ Qt的学习高速公路,让Qt开发者不在有难写的界面,不再被复杂的界面问题所困扰,当然课程里也有不少黑粉攻击,也有很多粉丝朋友的支持,在课程答疑群里,我也会尽自己所能为学员门解答,让每一个有志于C++ Qt开发的人,都能迅速上手并投入项目实战。本套教程一共3个阶段:

​ (1)C++零基础入门,

​ (2)Qt开发入门到高级进阶,

​ (3)C++ Qt开源项目OBS源码分析与应用。

​   本套课程由浅入深,详细的介绍了C++入门、Qt入门进阶到企业级项目实战、C++ Qt开源项目学习。相信通过本套教程的3门课程的学习,大家可以很好的掌握C++ Qt开发,课程提供答疑服务。

​   教程链接:C++ Qt入门进阶与企业级项目实战-CSDN程序员研修院


下面是各个阶段的介绍

阶段一:C++零基础入门与进阶

  C++零基础入门课程链接:2023 C++零基础入门视频教程_在线视频教程-CSDN程序员研修院

​  C++零基础入门课程,一共19个大章节,课件内容大概11万字, 由于C++有一部分知识点和C语言重合,本课程也附带讲解C语言的知识点,学习本课程是同时掌握两门语言,前10章是C和C++的共同部分,如果出现二者的区别会分开讲解。

课程主要内容如下:

C++ Linux开发环境搭建

  (1)学习虚拟机安装,Ubuntu Server安装,Ubuntu C++开发组件安装,VS Code Ubuntu C++开发环境搭建。

  (2)学习Windows WSL子系统安装与C++开发环境搭建。

在这里插入图片描述

C++ Windows开发环境搭建

​  学习Win11下VS2022安装与C++项目构建与调试

C/C++基础语法

   学习C/C++基础语法,标识符,变量,基本输入输出,运算符,循环控制,数组,指针与引用,字符串等知识点。

Linux VSCode C++调试

  学习linux静态ip设置,VS Code连接Ubuntu编写C++项目,学习在VS Code里如何调试C++项目。

VS2022 C++调试

  学习使用VS2022创建C++项目,介绍VS2022项目配置,VS2022与VS Code的区别。

Makefile

  学习在Linux下如何使用Makefile进行C++多目录多文件项目构建与调试。

CMake

  学习使用CMake构建C++项目,学习VS Code CMake进行项目调试。

C/C++内存管理

  内存管理是C++程序员的痛点,本课程会详细介绍C内存操作的相关函数,以及C内存池,C++ new与delete, 以及C++智能指针与new , delete之间的联系。

函数

  学习函数的函数的声明,函数参数的各种形式,函数指针,变参函数,全局函数等等

C++类与对象

  第11章C++类与对象是本课程的核心,本章会详细介绍C++类的各个知识点,名字空间,函数重载,类的声明,6中构造函数,析构函数,static, const关键字在类以及类对象的用法,类继承,多继承,虚继承,钻石继承,虚函数,纯虚函数,多态,类内存结构分析,友元函数,友元类,运算符重载等知识点。
在这里插入图片描述

C++智能指针

  智能指针是本课程第二个重点章节,本章节会详细介绍RAII机制,shared_ptr, weak_ptr, unique_ptr的用法,智能指针make系列函数的用法,自定义删除器,智能指针管理数组,以及开源项目WebRTC里智能指针的用法。
在这里插入图片描述

C++标准库学习

  学习玩类与对象,模板元编程、智能指针后,再来学习C++标准库,标准库知识点较多,在课程的第14章会详细介绍标准库里各种容器的用法。

在这里插入图片描述

C++职业发展介绍

在这里插入图片描述

阶段二:Qt入门进阶与企业级高级开发

课程链接:Qt高级开发视频教程_在线视频教程-CSDN程序员研修院

课程主要内容如下:

在这里插入图片描述

课程每章核心知识点介绍如下:

第一章:介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。

第二章:了解到很多学员对于Qt界面布局很不熟悉,将会详细介绍Qt设计器布局,以及如何C++代码手写布局,从常见的企业级项目入手,带领大家学会各种布局的实现,例如WPS、腾讯会议、优酷、迅雷等界面的实现;界面布局会了,这是企业项目开发的第一步,还有更重要的无边框窗口,如何设计一个合理的无边框窗口很重要,

第三/四章:详细介绍如何实现一个无边框窗口,如何自定义标题栏,如何实现拖拽拉伸;第四章将会介绍如何自定义非标控件,优化Qt界面。

第五章:介绍Qt web混合编程,一个商用项目,必然会涉及到web交互,这也是很多Qt开发者的弱项,这一章讲详细介绍C++ Qt web混合开发。

第六章:既然是做企业级项目,必然需要和后台交互,http编程也是必要的,将详细介绍http编程,用户注册,登录,后台接口请求等知识;通过第五、六章的学习,将会是你的Qt开发技术更上一层楼。

第七章:介绍Qt并发编程,耗时任务处理,进程调用等知识。

第八、九章:讲解 Qt 比较重要的知识,图形视图结构,以及MVD模式;通过这两章的学习,大家会对图形视图有更好的了解。

第十章:本章是独立章节,主要介绍Qt中一些特殊技巧,项目编译,dpi适配、多语言等知识。

第十一章:是我们的企业级项目实战:实现一个视频会议客户端,本项目可以进行多人视频通话,直播,桌面分享等功能,本项目我会从零开始,进行项目搭建,功能调试,bug fixed, 带领大家做一个企业级项目。

希望通过本课程的学习,大家的C++ Qt开发技术能有质的飞越,能找到自己心仪的工作。

下面是本课程一些项目的截图:

1 可以滑动的设置界面(高仿迅雷设置界面)

在这里插入图片描述

2 所有图形的绘制

在这里插入图片描述

3 视频播放器

在这里插入图片描述

4 视频会议

在这里插入图片描述

登陆页面

在这里插入图片描述

桌面共享代码

在这里插入图片描述

项目运行效果

在这里插入图片描述

阶段三:C++ Qt开源项目学习源码分析与应用

C++ OBS课程链接:C++ Qt OBS源码屏幕录制软件开发视频教程_在线视频教程-CSDN程序员研修院

本课程主要讲解OBS源码的编译,OBS功能实现,初始化,显示器录制,窗口的实现录制,以及录制模块源码详细分析,最后基于OBS源码开发了一个录制软件,界面如下:

在这里插入图片描述

主要有如下功能
(1)实现桌面,显示器采集、录制
(2)指定应用程序窗口进行录制
(3)可以选择系统声音,麦克风进行录制
(4)稳定fps 60,高清原画,鼠标不闪,、音视频同步,无卡顿,无延时
(5)可以指定帧率录制,5-60 fps都可以
(6)显示了系统托盘,录制时可以最小化到系统托盘

OBS课程大纲

在这里插入图片描述

OBS源码分析

初始化流程

在这里插入图片描述

OBS录制流程分析

在这里插入图片描述

以上3个课程均提供全部源码,提供答疑服务。

相关文章:

C++ Qt零基础入门进阶与企业级项目实战教程与学习方法分享

Qt是一个卓越的客户端跨平台开发框架,可以在Windows、Linux、macOS进行客户端开发,无缝切换,一统三端;当然除了桌面端,在移动端的早期,Qt也展现了其多才多艺,在Android和ios也可以使用Qt编写app…...

TypeScript学习记录

一、TS开发环境的搭建 1、下载并安装node.js 2、使用npm全局安装typeScript 进入命令行输入:npm i -g typescript 3、创建一个ts文件 4、使用tsc对ts文件进行编译 进入命令行进入ts文件所在目录执行命令:tsc 文件名.ts 二、TS基本变量 1、类型声…...

vue内置组件Transition的详解

1. Transition定义 Vue 提供了两个内置组件&#xff0c;可以帮助你制作基于状态变化的过渡和动画&#xff1a; <Transition>会在一个元素或组件进入和离开 DOM 时应用动画。 <TransitionGroup> 会在一个 v-for 列表中的元素或组件被插入&#xff0c;移动&#xff0…...

中秋节听夜曲,Android OpenGL 呈现周董专属的玉兔主题音乐播放器

概述 前几天发现QQ音乐有个好玩的功能&#xff0c;为用户提供了多种 播放器主题&#xff0c;其中 原神 的主题让我眼前一亮&#xff1a; 当然&#xff0c;诸如 换肤、主题 类的功能已经屡见不鲜&#xff0c;但这类沉浸式播放器的听歌体验确实不错。 见猎心喜&#xff0c;正好…...

008_第一代软件系统架构

第一代软件系统架构 文章目录 第一代软件系统架构项目介绍软件架构和软件构架系统框架硬件组成运行系统基础库软件层 系统架构 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&…...

oracle客户端的安装(SQL Developer)

参考资料 软件首页&#xff1a;https://www.oracle.com/database/sqldeveloper/ 官方文档&#xff1a;https://docs.oracle.com/en/database/oracle/sql-developer/ 下载地址&#xff1a;https://www.oracle.com/database/sqldeveloper/technologies/download/ 安装指南&#…...

Mysql索引优化1

关闭查询缓存 set global query_cache_size 0; set global query_cache_type 0; force index&#xff08;索引&#xff09;where 条件 强制走索引 一般不推荐&#xff0c;因为mysql结构中会通过cost计算出最优sql路线 索引下推 5.6之前 会先从辅助索引表也就是二级索引…...

Spring常考知识点(IOC、事务、容器等)

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有需要我的支持&#xff0c;请私信或评论留言&#xff01; Spring需要理解的问…...

Leetcode 2867. Count Valid Paths in a Tree

Leetcode 2867. Count Valid Paths in a Tree 1. 解题思路2. 代码实现 题目链接&#xff1a;2867. Count Valid Paths in a Tree 1. 解题思路 这一题思路上的话由于要求路径上有且仅有一个质数点&#xff0c;因此&#xff0c;一个直接的思路就是考察所有质数的点作为中心点时…...

Jtti:Ubuntu下如何创建XFS文件系统的LVM

在 Ubuntu 下创建一个 XFS 文件系统的 LVM&#xff08;Logical Volume Manager&#xff09;分区需要一系列步骤。以下是详细的步骤&#xff1a; 1. 创建物理卷 (PV) 首先&#xff0c;将要用于 LVM 的硬盘分区&#xff08;物理卷&#xff09;初始化为物理卷。假设你有一个硬盘…...

做销售管理分析需要看哪些关键指标?

做销售管理分析需要看哪些关键指标&#xff1f; 销售管理分析时抓取关键指标&#xff0c;有着能够【分析和判断销售趋势、为销售决策提供数据支持、优化销售流程和客户管理】等的好处 在了解了分析关键指标的目的之后&#xff0c;我们就可以根据企业的需求来确定关键指标&…...

【Python】自动完成手写字体图片贴入以及盖章工具

简介 该工具完成了如下功能&#xff1a; 1.将文字转换为手写体填入到模板文件中 2.自动将文字转换为盖章格式填入到模板文件中 3.字体格式可以替换 4.有配置文件进行扩展功能 功能模块 1.界面模块 import sys from PyQt5.QtWidgets import QApplication, QMessageBox, QWid…...

基于Xml方式Bean的配置-初始化方法和销毁方法

SpringBean的配置详解 Bean的初始化和销毁方法配置 Bean在被实例化后&#xff0c;可以执行指定的初始化方法完成一些初始化的操作&#xff0c;Bean在销毁之前也可以执行指定的销毁方法完成一些操作&#xff0c;初始化方法名称和销毁方法名称通过 <bean id"userService…...

实时更新进度条:JavaScript中的定时器和异步编程技巧

前言 在Web开发中&#xff0c;有许多场景需要实时地更新页面上的进度&#xff0c;例如上传文件、数据处理等。本文将介绍如何利用JavaScript中的定时器和异步编程技巧来实现实时更新进度&#xff0c;并探讨一些其他解决方案。 处理进度实时更新&#xff1a; 利用异步编程实现实…...

【简单图论】CF898 div4 H

Problem - H - Codeforces 题意&#xff1a; 思路&#xff1a; 手玩一下样例就能发现简单结论&#xff1a; v 离它所在的树枝的根的距离 < m 离这个根的距离时是 YES 否则就是NO 实现就很简单&#xff0c;先去树上找环&#xff0c;然后找出这个根&#xff0c;分别给a 和…...

【大虾送书第十一期】适合新手自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》

目录 &#x1f96e;写在前面 &#x1f96e;内容简介 &#x1f96e;读者对象 &#x1f96e;专家推荐 &#x1f96e;目录 &#x1f96e;文末福利 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;免费送书活动专栏地址 写在前面 CTF比赛是快…...

IDEA安装离线插件后重启无法打开

解决方法 1.找到插件安装目录删除插件 插件的位置一般在C:\Users\19058\AppData\Roaming\JetBrains\IntelliJIdea2021.1\plugins 高亮部分是自己电脑的用户位置&#xff0c;把报错前的刚才最新安装的插件删除&#xff0c;再尝试打开idea即可解决该问题 2.补充说明 AppData是个隐…...

论软件的可靠性设计

摘要 2021年6月&#xff0c;我所在的公司中标某集团保险大数据平台一体化研发项目&#xff0c;该项目总投资2000万人民币&#xff0c;项目周期为2年&#xff0c;通过该项目&#xff0c;搭建该集团保险大数据平台&#xff0c;一方面将全国所有保险业务全部入库并保存&#xff0…...

AG35学习笔记(一):debug串口抓取模组log、debug串口测试AT指令、echo命令通过串口发送16进制数据

目录 一、概述二、抓取模组log2.1 硬件接口2.2 用户登录2.3 相关指令 三、测试AT指令3.1 查看端口3.2 进入模式 四、串口发16进制echo使用 一、概述 二、抓取模组log 在之前记录了通过USB&#xff0c;使用移远工具Qwinlog来抓取log&#xff08;3.3 抓取模组log&#xff09;。…...

Python进阶学习----一闭三器

目录 ​编辑 前言 一.三器 1. 迭代器&#xff08;Iterator&#xff09; 1.1 什么是可迭代对象 1.2什么是迭代器 1.3案例演示&#xff1a; 以下是一个简单的迭代器示例&#xff0c;遍历一个列表并打印每个元素&#xff1a; 1.4迭代器总结 2. 生成器&#xff08;Generat…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...