自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

藏经阁

寒江孤影,江湖故人,相逢何必曾相识

  • 博客(379)
  • 资源 (20)
  • 收藏
  • 关注

原创 C++ Qt视频教程

该教程是我个人的Qt开发工作总结,Qt内容较多,目前已更新104节,后续会继续更新,需要了解Qt开发知识的可以私信我,我会在找时间在课程中陆续更新。 课程链接,请点击:https://edu.csdn.net/course/detail/30578 可以加我的qq群,一起学习Qt。...

2020-11-05 23:42:10 1246

原创 obs源码分析(2):录制功能剖析

  学obs, 一是看它的代码结构,二是把obs的代码抠出来运用到项目中,这篇先来看看obs的录制功能是如何实现的,先找到录制的按钮  查找recordButton对应的槽函数,Qt客户端项目嘛,简单,槽函数无非就那几种写法,直接来on_recordButton_clicked(), 这种是最简单的,刚好obs就是这种写法,而且主界面上其它的控件槽函数也在当前文件中。  那么去它的cpp源码看看,void OBSBasic::on_recordButton_clicked(){ if (out

2021-06-18 00:19:35 10

原创 vs2017编译x265源码

本篇博客介绍如何在windows上用vs2017编译x265源码为sln,在编译x265之前,先得安装vs2017,其次是安装好CMake.x265官网:https://www.videolan.org/developers/x265.html查看官网可知,在ubuntu命令行下执行如下命令即可获取源码:hg clone http://hg.videolan.org/x265如果没有安装mercurial,则会报错,执行如下命令进行安装:sudo apt-get install mercuria

2021-06-17 21:57:11 7

原创 无法执行hg clone怎么办

ubuntu 执行如下指令sudo apt-get install mercurial

2021-06-17 21:11:17 2

原创 WebStorm配置electron启动器

在WebStorm中启动electron项目主要有两种方式,外部命令和脚本,下面分别介绍这两种方法。方法一:extern tools打开file—>setting–>tools—>external tools添加ok后需要重启webstorm在右键菜单才会有external tools选项。然后在项目代码中任意一个文件右键用electron启动即可。方法二:js脚本新建一个run.js文件,在里面写如下代码:var exec = require('child_process'

2021-06-15 21:20:52 7

原创 windows electron开发环境搭建

electron环境安装安装node.js, 下载node.js 直接安装就可以,验证是否安装ok, 执行如下命令查看nodejs的版本node --version注册淘宝仓库npm install -g cnpm --registry=https://registry.npm.taobao.org安装cnpm install -g electron查看electron版本经过以上3步,electron就安装ok了,可以运行 electron -v 查看安装的版本,例如

2021-06-14 21:50:52 11

原创 obs源码分析(1):main函数

  最近对obs的代码感兴趣了,在obs里也抠了不少功能出来用到项目上,准备把自己的心得记录下来,有兴趣的可以一起留言讨论。  在学习obs源码之前,需要先编译obs的源码,有需要的可以看上一篇,obs项目的编译方法,需要的可以点击【obs编译方法】main函数在哪里  obs的界面是Qt写的,目测没用到QML, 既然是Qt, 那先从main函数开始,如果你是一个新手,在几百个cpp文件中,怎么快速找到main函数呢,ctrl F全局搜索main(  经过查找,可以很快确定是在obs-app里面

2021-06-10 22:07:02 36

原创 vs2019 cmake编译obs源码【详细过程绝对可以编译运行】

  obs的编译不是很难,只要代码下的全,环境变量配的ok, 基本都能编译过,我在很多台电脑帮别人编译过,都编译OK了。  obs官网 https://obsproject.com/  obs代码仓库 https://github.com/obsproject/obs-studio  本篇博客介绍如何在win10上用vs2019 cmake编译obs, 先去github上的编译介绍,obs仓库的wiki页面查看各种build简介,不会的直接点这个链接https://github.com/obsproj

2021-06-10 20:58:30 58

原创 Qt如何自适应4k这些高分辨率屏幕

  Qt在开发pc端应用程序时,无法自适应桌面分辨率,比如常用的win10电脑是19201080这种屏幕,而mac是2k屏,25601440,在windows上开发的软件放到macbook或者其它高分屏的屏幕时,Qt UI就会变形,控件的大小和图标就会拉伸缩放,Qt作为跨平台应用开发框架,如果连自适应屏幕都做不到,那真是有点难堪了,其它的界面框架,例如WPF, ImGUI对高分屏是自适应的是框架自己完成的。  其实,Qt还是有方法可以做到自适应屏幕。  先来看一个概念 logicalDotsPerInc

2021-05-25 22:58:59 143

原创 ffmpeg对视频数据进行h264编码为并封装成mp4

ffmpeg抽取视频1.mp4 30秒的rgb数据,指令如下:ffmpeg -i 1.mp4 -t 30 -pix_fmt rgb24 -s 960x640 data24.rgb-t 30表示时间,30秒下面是rgb–>yuv–>h264–>mp4的流程/*ffmpeg视频编码 rgb转mp4*/#include <iostream>extern "C"{ #include <libavformat/avformat.h> #incl

2021-05-24 22:37:00 45

原创 Qt录制音频为pcm并进行ffmpeg aac编码

  Qt提供了音频采集功能,主要涉及到3个类,QAudioFormat,QAudioInput,QIODevice。  在进行音频采集时先用QAudioFormat设置采集参数,然后创建音频输入对象QAudioInput,最后用QIODevice提供的方法进行采集。  查询Qt助手可知在使用Qt音频相关的类时,需要导入multimedia模块:  那么在.pro文件就得添加multimedia:  Qt音频采集代码如下:#include <QCoreApplication>#in

2021-05-23 18:58:52 74

原创 Qt枚举目录文件并获取文件名

#include #include #include int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QString dirpath = "F:/Test/";QDir dir(dirpath);QStringList nameFilters;nameFilters << "*.MP4" << "*.flv";//将过滤后的文件名称存入到files列表中QStringList

2021-05-22 14:53:44 30

原创 什么是m3u8?

什么是m3u8?​  m3u8是苹果公司推出的视频播放标准,是m3u的一种,只是编码格式采用的是UTF-8。  m3u8准确来说是一种索引文件,使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址,从而实现在线播放。使用m3u8格式文件主要因为可以实现多码率视频的适配,视频网站可以根据用户的网络带宽情况,自动为客户端匹配一个合适的码率文件进行播放,从而保证视频的流畅度。​  现在的视频网站采用的是流媒体传输协议,就是将一段视频切成无数个小段,这几个小段就是ts格式的视频文件,一段一段的

2021-05-22 14:47:51 98

原创 MFC CString转const char *

代码如下:USES_CONVERSION;std::string s(W2A(url));const char* _url = s.c_str();

2021-05-16 17:23:07 29

原创 Qt connect有第5个参数你知道吗?

  Qt开发中信号槽是常用的技术,正常使用时都是4个参数,很少用到第5个,下面来看看connect的声明:  第五个参数是连接类型,声明如下:enum ConnectionType { AutoConnection, DirectConnection, QueuedConnection, BlockingQueuedConnection, UniqueConnection = 0x80 };  由此可知con

2021-05-14 16:10:31 59

原创 Qt实现屏幕录制功能

  网上有很多屏幕录制软件,作为程序员自己写一个录屏软件其实也是可以的,本篇介绍Qt屏幕录制功能的实现。  QScreen类提供了很多与屏幕相关的API, 例如抓屏API:QPixmap grabWindow(WId window, int x = 0, int y = 0, int w = -1, int h = -1);  传入窗口Id, 位置,宽高,就可以进行屏幕抓取了。  新建一个GUI项目,下面就把抓取的屏幕在Qt界面上显示出来,  .h文件#pragma once#includ

2021-05-13 18:05:50 100

原创 C++构造函数可以调用虚函数吗?

  C++构造函数可以调用虚函数吗?这个问题比较奇怪,为什么要在构造函数调用虚函数,这更多的应该是用在一些框架里面,构造函数里调用虚函数是可以的,没问题。例如下面的代码:#include <iostream>using namespace std;class A{public: A() { fun(); } ~A() {} virtual void fun() { cout << "A

2021-05-12 20:10:05 23

原创 学习C++ Qt/MFC客户端开发还有前途吗?本文给你答案

  C++ 客户端开发在2010年之前应该还是挺流行的,自从移动端,web兴起之后,PC客户端开发就逐渐走下坡路了,甚至很多语言、框架都消失了,退出了企业的招聘舞台,像VB就是鲜明的例子。大部分公司都走向了移动,web,小程序的热潮,C++ Qt/MFC客户端开发岗位逐渐减少,但并没有消失。  本文主要回答标题的问题,C++ Qt/MFC客户端开发还有前途吗?我的答案是:PC客户端开发仍然有前途,任然有岗位需求。  下面我就慢慢给大家讲解分析。一 客户端应用领域1 商业软件  由于电脑办公的便利以

2021-05-12 16:15:22 127

原创 C++ new delete运算符重载

  每个类中都包含默认的new, delete, C++程序员可以对new和delete进行重载,达到想要的功能。重载new操作符  格式如下static void* operator new(size_t t){ return xxx;}  如果直接返回nullptr, 那么这个类就无法进行new操作了。重载delete操作符  格式如下:static void operator delete(void* p){}具体应用  下面是在Test类中重载new、delete,

2021-05-06 20:25:38 66 2

原创 Qt5.15, Qt6安装教程

从Qt5.15之后,免费用户需要在线安装Qt, 或者下载Qt源码自己编译,用源码编译时间比较长。Qt5.15增加了PDF开发模块,其它的也没什么改变。下面介绍如何在线安装Qt5.15级以后的新版本1 打开网址 https://download.qt.io/official_releases/2 选择需要的版本,提供了windows, mac, linux的版本3 双击安装,需要登录Qt账号,可以自己注册一个(或者双击前断网,next之后再把网络打开)。4 到了这一步时,勾选下面两个checkb

2021-05-06 18:34:02 598

原创 CMakeLists.txt编写教程

先安装cmake, 在windows控制台,输入cmake --version 可以查看cmake的版本,cmake主要用来实现项目的跨平台构建与编译,例如下面的代码:helloworld.cpp#include <iostream>using namespace std;int main(){ cout << "hello cmake" << endl; system("pause"); return 0;}编写CMakeList

2021-04-29 20:18:00 130

原创 Qt按钮左边图片右边文字

在Qt中实现按钮的图片在左,文字在右,主要有两种方法,如下:方法一 : 设置按钮内部布局ui->pushButton->setIcon(QIcon(":/pic/share.png"));ui->pushButton->setLayoutDirection(Qt::LeftToRight);效果如下:按钮的其它效果可以再用样式表实现。方法二 :样式表QString btnStyle = "QPushButton{" "background-image: u

2021-04-27 20:51:45 63 1

原创 C++深拷贝与浅拷贝详细分析与代码演示

  C++的对象在赋值或拷贝时,容易出现两个对象指向同一块内存,这种属于浅拷贝或者叫浅赋值,例如下面的代码实现一个string类:/*深拷贝与浅拷贝*/#include <iostream>class mystring{private: char* _str = nullptr; int _len = 0;public: //默认构造函数 mystring() { _str = new char[1];

2021-04-24 16:22:47 59

原创 C++ mysql connector使用方法

mysql connector的下载  C++ 操作mysql数据库可以用原生的api, 也可以用mysql connector, 在mysql下载页可以找到下载入口 https://dev.mysql.com/downloads/, 如下图:在vs2019中的配置头文件  Conneector 的使用方式和常规sdk一样,包含头文件,静态库,动态库即可。注意Conneector 在8.0之后需要boost支持,在vs中需要配置boost的路径,如下:lib路径  在附加依赖项添加静态库名

2021-04-23 19:07:47 57

原创 mysql安装方法

(1)访问mysql官网下载链接 https://www.mysql.com/downloads/翻到最下面,选择社区版(2)点击下面的红框,这里有很多工具可以下载,比如 C++ mysql connector, .net接口,odbc等。(3)点击下图的红框 go to download page(4)点击下面的红色部分开始下载,这个435M的会带有所有的安装文件,包括mysql server, API和客户端工具workbench等。(5)直接下载,不需要注册..

2021-04-21 20:18:59 46

原创 linux C++ makefile文件编写方法

普通文件编译gcc 文件.c -o 生成可执行文件名如果是C++文件,则用g++makefile编写新建一个makefile, 首字母可以大写,也可以不大写,不需要后缀, 写入如下内容test:test.c gcc test.c -o test编译时直接运行make即可如果有多个文件,makefile该怎么写?多个文件可以直接一起编译,但是gcc的语句会很长,如下gcc 1.c 2.c -o testmakefile编写main:main.c tool.o gcc main

2021-04-17 14:42:14 57

原创 boost ubuntu编译指南

boost下载与解压boost库版本页面https://www.boost.org/users/download/当前的版本是1.75.0,下载链接https://dl.bintray.com/boostorg/release/1.75.0/source/boost_1_75_0.tar.gz本篇教程用deepin系统演示,在ubuntu下类似,命令完全一样。先在桌面创建一个文件夹,例如boost_code, 进入boost_code, 用wget命令下载,如下图wget https://dl

2021-04-17 01:02:47 54 1

原创 ubuntu boost运行./bootstrap.sh后出现Failed to build B2 build engine

ubuntu boost运行./bootstrap.sh后可能会出现如下提示Building B2 engine…A C++11 capable compiler is required for building the B2 engine.Toolset ‘cxx’ does not appear to support C++11.Note, the C++11 capable compiler is only required for building the B2engine. The B2

2021-04-17 00:08:17 237 1

原创 C++实现单链表

本篇介绍如何用C++实现单链表首先需要定义节点Node.h#ifndef NODE_H#define NODE_Hclass Node{public: int data; Node *next;public: void printNode();};#endifNode.cpp#include "Node.h"#include <iostream>using namespace std;void Node::printNode(){ cout &l

2021-04-13 20:46:03 31

原创 C++实现string类

C++写一个string类,其实更多的是对C++内存分配,运算符重载的功能的运用。 MyString.h#pragma once#include <iostream>using namespace std;class MyString{public: MyString(); //默认构造函数 MyString(int n, char c); //普通构造函数 ...

2021-04-13 19:19:24 44

原创 C++ 外观模式

  外观模式又称为Facade,为子系统中的一组接口(相当与上面的模块)提供一个一致的界面。此模式定义了一个高层接口,这个结口使得这一子系统更加easy使用。​  我们仅仅需调用高层的函数接口。而不用关心高层内部调用是怎样组合底层方法的。更不用关心底层函数是怎样实现的。​  例如,我们须要完成两个工作,要完毕工作1我们须要依次完成子工作Sub_Work1、Sub_Work3;要完成工作2我们须要依次完成子工作Sub_Work2,Sub_Work3,Sub_Work4。为了能让用户与这些子工作分离,我们採

2021-04-11 22:03:26 51

原创 C++ 代理模式

  代理模式(PROXY),也称为委托模式,作用就是找一个对象来替我们访问某个对象,就像租房子,需要找中介,中介就是属于代理。  租房子模型#include <iostream>#include <string>using namespace std;class Person{public: virtual void rentHouse() = 0;};class Mike :public Person{public: void rentH

2021-04-11 21:55:46 64 2

原创 C++设计模式:装饰器模式

装饰器模式(Decorator Mode), 别名,包装器Wraaper.​装饰器模式的作用是为了实现动态的给对象添加职能,即从外部给对象添加相关职能。可以这样理解,比如说一个Person类,该类的操作有能吃、能睡、能跑、但假如随着人类的进化,某一天Person能飞了,能瞬移了等等,按照一般的写法是修改Person这个类,给这个类添加上能飞,能游等操作,但是这样破坏了面向对象的开放-封闭原则, 且随着人类的进化这个类就会变得越来越臃肿,越来越复杂,添加任何一个功能都必须对这个臃肿的类进行修改,出错的概率大

2021-04-11 15:31:15 42

原创 C++模板特化与偏特化的说明与代码示例

模板特化的定义模板特化不同于模板的实例化,模板参数在某种特定类型下的具体实现称为模板的特化,以实现特定类型下非通用行为。模板特化有时也称之为模板的具体化,分别有函数模板特化和类模板特化。特化主要分三种(1)全特化:将模板的参数全部指定为特定类型,类和函数都支持(2)偏特化:部分参数指定为特定的类型,模板函数不支持偏特化(3)特化为另外一个类模板(复杂点的偏特化),其实这种也是类似于1,2形式类的特化例如下面是类的全特化与偏特化的写法:#include <iostream>us

2021-04-09 19:24:53 42

原创 ubuntu常用命令记录

vi上下左右变成了ABCDubuntu预装的是 vim tiny,安装vimfull版本,可以解决卸载vim-tiny:sudo apt-get remove vim-common安装vim full:sudo apt-get install vim

2021-04-04 20:01:53 41 1

原创 C++细节问题记录

用类成员做回调函数时为什么要用static声明如果一个callback函数是一个类成员函数,就要加上static,原因在于必须舍弃掉类成员函数的隐藏参数this指针 。比如一个callback函数被要求声明为以下形式:void CALLBACK function(); 如果这个函数在类ObjClass里面,编译器会为其添加一个this指针,用于指向调用该函数的对象。所以编译出来的代码是这种形式:void CALLBACK ObjClass::function(ObjClass* th

2021-04-04 19:28:35 35

原创 VS2019编译OpenSSL源码

OpenSSL是什么? OpenSSL是一个开放源代码的软件库包,英文全称是Open Secure Sockets Layer,中文叫法是开放式安全套接层协议。应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。 官网 https://www.openssl.org/ github : https://github.com/openssl/openssl github 代...

2021-04-04 15:57:43 103

原创 new malloc delete free有什么区别

new/malloc, delete/free 的区别,这个问题在面试时会经常被问到。相同点: 都是内存的分配与释放。不同点: new/delete是C++ 操作符,new在分配内存时,会调用对象的构造函数,可以被重载; malloc/free是库函数,不能被重载, 且malloc 返回值的类型是void *,所以在调用malloc 时要显式地进行类型转换,将void * 转换成所需要的指针类型。例如下面的代码,用malloc 申请一块长度为lengt...

2021-04-03 20:28:09 27

原创 QCustomPlot使用教程与代码演示

QCustomPlot是C++ Qt数据可视化组件,可以绘制各种动态静态曲线,散点图,主状态等,功能和QCharts类。​ 官网:https://www.qcustomplot.com/index.php/introduction​ 最新的版本已经支持到Qt6.0,如下图QCustomPlot转换成矢量图可以导出各种格式, 比如PDF文件和光栅图像像PNG, JPG, BMP。 在Qt应用程序时,QCustomPlot是实时数据显示比较好的解决方案。例如下面是QCusto

2021-04-01 12:32:11 134

原创 Qt实现圆角窗口

某些时候为了界面美观,需要给窗口加圆角,例如Mac的很多软件的四个角都是用的圆角,国产系统deepin, uos也是这种界面风格,例如下图:下面介绍用Qt如何实现这种带有圆角的窗口,主要有两种方法:样式表和窗口重绘。方法1:样式表实现首先需要设置窗口透明,去掉边框,再用样式表设置背景色,圆角等,主要代码如下:#include "widget.h"#include "ui_widget.h"#include <QStyleOption>#include <QPainter&g

2021-03-30 19:12:34 165

华为C++/C/java代码规范(完整版)

最新的华为代码规范,适用于C++/C/java,高清带目录,格式标准的代码给自己和维护者都是一种享受,建议程序员多看看。

2018-03-14

侯捷:左手程序右手诗(电子书)PDF

侯捷的日常博客全部总结,关于C++开发,业余生活体验,程序员发展等,值得所有开发者看看,在你迷茫,找不到方向,不知道做什么时可以看看这本书。

2019-06-07

Qt进度条QProgressBar的使用(详细代码)

详细的工程代码与注释,讲解Qt进度条QProgressBar的使用方法,完整的代码。

2018-05-03

Qt子线程更新数据发到主线程显示.rar

Qt的子线程无法直接更新主UI,需要发送信号到主线程进行更新,我用的QTableWidget展示数据。

2019-08-18

ffmpeg3.2.4_Win32开发库文件

ffmpeg3.2.4_Win32开发库文件,包含头文件,静态库lib, 动态库dll.

2018-06-03

C++/OpenCV2.4.9 数字精确识别源码

利用OpenCV的图像处理技术,对图像进行灰度处理,二值分析,降噪,滤波等,识别照片中的数字,完美精确, C++ VS2015代码,有详细的代码注释,完整源码。

2017-11-02

Halcon12与MFC数字识别详细教程

基于Halcon12的数字识别,识别精确,关于代码的解释,请关注的我的博客,在博客里我做了详细的解释。

2018-07-09

C# Winform数值实时曲线(完整示例)

C#实现显示实时数据,并形成曲线,保存数据,完整的项目代码

2017-07-01

C# TCP网络通信示例:多人聊天发文件

该资源包含客户端,服务器, 用户注册到数据库(可自行裁剪该功能),通过TCP 实现聊天,发文件,可以多人同时聊天。代码有完整的注释,是完整的项目。

2018-04-02

jsoncpp_sdk_x64.rar

vs2017编译的jsoncpp sdk, 包含Debug和Release版本dll, lib , include,可以和其它sdk一样直接包含到项目中使用,可以去我的博客C++专栏找使用方法。

2020-04-06

Win10 Git Bash闪退的解决方案文件

当你的Win10系统出现Git Bash闪退时,需要该文件进行开启相关服务,可以参考我的博客进行解决。

2018-11-07

支持向量机通俗导论(理解SVM的三层境界)PDF

这应该是全网最全最清晰的SVM学习的资料了,我学了10天,终于了解了,大家可以学学看。PDF文档学会后,可以结合OpenCV的源码看看,相信你们一定有大的收获。

2018-04-13

很全的 Qt qss

这是一个Qt第三方样式表,下载后,可以直接加到项目中使用。不知道怎么用的,可以关注我的Qt专栏。使用链接:https://mingshiqiang.blog.csdn.net/article/details/108860180

2020-09-29

中国象棋源码(C++/MFC)

用MFC写的中国象棋游戏,VS2015可以直接编译,有多重AI算法,有兴趣可以研究,全网最好的象棋代码。又不懂的可以看看我的博客,有讲解。

2018-12-24

MusicPlayer.rar

该音乐播放器使用Qt开发,代码用QtCreator编写,下载即可使用,主要用QMediaPlayer的一些功能,可以看我的博客讲解。

2019-11-17

Qt 5.7串口助手发送接收源码

利用Qt的串口类开发的串口助手,可以收发16进制,字符的程序。完美的界面,可以实际运用,串口开发的朋友可以借鉴,绝对可靠。

2018-06-19

ffplay源码架构图.vsdx

我用visio2016画的,把ffplay源码中的各个模块都展现出来了,有兴趣的可以去看看我的博客。

2019-12-08

lua-5.3.4源码

lua5.3.4源码,导入VS2015可以直接编译,想学习分析Lua源码的可以下载,研究。

2019-01-10

FileDownlod.rar

Qt实现的网络文件下载,用QtCreator可以直接打开编译,运行,我的博客有讲解,可以去看看。

2019-08-05

(Programming in Lua)Lua程序设计Word版

Programming in Lua是Lua教程最经典的书籍,这是Word版,可以自由编辑,Lua用户可以下载

2018-08-28

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除