库的二进制兼容 对于一个已经发布的库,如果在库的某个接口类中增加了一个成员,并重新发布该库,如果使用该库的程序直接替换该库后运行时会导致程序崩溃,解决办法就是重新编译应用程序...
库的二进制兼容 对于一个已经发布的库,如果在库的某个接口类中增加了一个成员,并重新发布该库,如果使用该库的程序直接替换该库后运行时会导致程序崩溃,解决办法就是重新编译应用程序...
Qt元对象 为了在运行期获得对象的类型、类名成员变量列表、函数列表等等功能,Qt推出了元对象系统(和iOS开发中元对象类似),由MOC(元对象编译器)工具在编译期间自动生成,...
Windows安装包种类: 1、MSI 一般用于驱动程序,安装时直接覆盖已有文件和程序2、EXE 常用的安装程序,缺点是卸载时会有残留文件3、APPX uwp应用推出时推...
背景 Qt是一个跨平台开发框架,业界也有不少成熟产品基于该技术,它的好处在于一套代码即可产出各个端(mac、windows、linux)的安装包,极大的节省了开发成本。由于Q...
一、事件类型 1、事件分类 Qt中事件根据源头分为三种类型: 自发事件:由操作系统产生(例如用户按下鼠标,操作系统会产生一个鼠标事件)然后提交到Qt的event loop P...
目前业界有提供了一些工具来检查c++的内存问题并符号化(泄漏,野指针等等),Google Sanitizer(Google基于Clang的子项目)、Valgrind。Clio...
一、m 系列芯片 MacBook 使用 Qt5使用官方下载的 MaintenanceTool 是没办法直接下载 arm 架构的 Qt5 库的。在 QtCreator 上面运行...
一、初始化列表和构造函数体初始化区别 对于基础类型,使用初始化列表初始化和在构造函数体内初始化是一样的。 对于引用成员变量、const成员变量、必须使用初始化列表,否则编译器...
一、构造函数 不同的语法使用场景会自动调用功能不同的构造函数。c++的构造函数主要有如下几种类型:无参(多参)构造函数、拷贝构造函数、移动构造函数、赋值构造函数(赋值语句)、...
一、前言 Qt及QtWidget框架采用c++作为开发语言,它的内存管理遵循c++的内存管理原则,同时Qt也推出了一套自己的内存管理机制用以提高内存管理的效率 二、手动内存管...
1、背景 Qt的多语言文件是xml格式,且需要包含源文件名,行数等等信息才可以被正确识别(有点奇怪),如下为一段标准的Qt多语言格式 上述source字段即为key,tran...
一、背景 基于CMake的文件目录结构需要有一个统一的规范,方便后续项目的管理及提高开发效率,调研了网上一些开源项目的目录结构后做如下的总结。主要从工程目录结构、工程文件引入...
启动速度 用户从点击APP图标到完全看到APP内容的过程称为启动,如果启动耗时较长可能会影响用户的体验,所以启动速度优化就显得很有必要。 最佳速度:400ms,这是刚好是启动...
前言 1、播放器如何实现暂停?2、暂停之后在从暂停之处开始播放?3、播放中快进、后退这些操作实现细节?以上功能是作为播放器最重要也是非常基础的功能,本文就是仔细学习一下ffp...
前言 音视频同步 所谓音视频同步,是指视频画面和音频声音给用户的感觉是差不多的,一致的。对于已经压缩好的音视频流(不管是保存在本地的MP4文件还是来自远程的rtsp中的直播流...
前言 解码作为渲染模块和拉流模块的中间模块,它一方面要不停的从拉流模块的压缩数据缓冲区中获取待解码数据包,让后将这个数据包送入自己的解码模块,获得解码数据后再送入自己的解码缓...
前言 这里所谓的拉流从就是指从本地文件或者远程文件不停获取压缩的音视频数据包并缓存在本地待解码的过程,用一张图形象的画出来其过程如下: 拉流模块 这里要有个拉流线程让拉流模块...
前言 之前陆续学习了视频渲染相关技术opengl es,视频编解码相关技术(基于ffmpeg封装接口的使用),虽然拥有了这些基础知识,但是离写出一个功能完善的播放器还有一段距...
前言 最近在研究GPUImage3代码,看到如下这一段代码 上面的代码自定义了一个运算符 --> 这个运算符需要两个操作数,优先级与+和-一样,该操作符使用的代码 它与GPU...
前言 任何一款APP的交付都是一个复杂的过程,很多时候经常碰到这样的现象,APP在开发测试阶段没有任何异常,但上线后就异常频出。例如常见且重要的崩溃类异常,出现这些异常,可能...