摘要: 上篇主要讲了针对yv12流数据的渲染,但有时候我们显示视频还要求加一些信息,比如头像,昵称等等。一般的想法是在渲染窗口之上做一个小控件来负责; 但是很遗憾,你会发现你的控件被SDL的渲染完全遮住了,渲染的原理并非是在本窗口的刷新做,而是另外有一层负责,这也是为什么上篇强调一定要setUpdateEn 阅读全文
posted @ 2018-10-07 01:51 公子开明 阅读(1065) 评论(0) 推荐(0) 编辑
摘要: 1. 引用的实现原理 引用一般的概念称为变量的别名,定义的时候必须初始化绑定一个指定对象,且中途不可更改绑定对象,那么引用的原理是怎样的呢? 先看一段简单的代码测试 输出结果 可以看到只有一个引用成员对象的类,sizeof是4,跟只有一个指针成员对象的类是一样的,那么先大胆假设引用其实就是一个指针, 阅读全文
posted @ 2018-10-04 00:26 公子开明 阅读(4942) 评论(0) 推荐(1) 编辑
摘要: SDL(Simple DirectMeida Layer)是一个简单的封装媒体库,功能主要涉及了相关于OpenGL或者DirectX的显卡硬件功能和一些鼠标,键盘等外设访问。这里主要只说明一下它的渲染功能 因为Qt本身不支持YUV流媒体数据显示,且QWidget默认是栅格式渲染(qml是默认GPU) 阅读全文
posted @ 2018-04-18 15:04 公子开明 阅读(2972) 评论(0) 推荐(0) 编辑
摘要: Qt的信号槽有五种连接方式定义在enum Qt::ConnectionType,下面简单介绍 Qt::AutoConnection:自动判断连接方式,如果信号发送对象和执行槽对象在同一线程,那么等于Qt::DirectConnection,如果不是则等于Qt::QueuedConnection Qt 阅读全文
posted @ 2018-04-04 10:25 公子开明 阅读(1120) 评论(0) 推荐(0) 编辑
摘要: 一般来说,我们发出信号使用emit这个关键字来操作,但是会发现,emit并不算一个调用,所以它没有返回值。那么如果我们发出这个信号想获取一个返回值怎么办呢? 两个办法:1.通过出参形式返回,引用或者指针的方式带回;比如emit sig(int& i)或者emit sig(void* pointer) 阅读全文
posted @ 2017-12-03 22:07 公子开明 阅读(5880) 评论(0) 推荐(0) 编辑
摘要: 一般来讲,UI的所有操作都必须在主线程,否则会出现未知错误。但有时候我们会需要一个功能比较单一的窗口,同时希望他在一个单独的线程运行。并不影响主线程的效率。 下面说明一下新建子线程创建的新窗口的方法,关键在于在子线程中,有一套自己的事件循环机制,即可脱离主线程单独运行 其实基本就是模拟win sdk 阅读全文
posted @ 2017-11-30 16:42 公子开明 阅读(2461) 评论(0) 推荐(0) 编辑
摘要: 最近写了一个修改头像功能的UI,布局参考了QQ目前的修改头像界面。如下图 这里主要说明一下两个地方的技术:1.头像图片上层的遮罩层,圆形外部为灰色,内部为全透明;2.上传图片宽高比例可以通过鼠标拖拽移动图片显示并通过滑动条进行图片大小放缩 遮罩层说明 遮罩层的处理主要在于怎么在一个透明灰色窗口上擦除 阅读全文
posted @ 2017-11-28 15:16 公子开明 阅读(1375) 评论(1) 推荐(1) 编辑
摘要: 有时候我们会有这种需求,自己的桌面程序需要置顶,但是程序包含了很多窗口,可能我们要求窗口1,2都在其它桌面程序之上,但是窗口1必须随时在窗口2之上。 Qt提供的置顶方式是在windowsflags上增加标签,setWindowFlags(Qt::WindowStaysOnTopHint);但是针对两 阅读全文
posted @ 2017-11-21 23:58 公子开明 阅读(7154) 评论(1) 推荐(0) 编辑
摘要: 开发环境:win10+vs2015+qt5.9.1 背景:开发过程中,一般很少会使用系统提供的标题栏和边框;往往都是自定义一个自己设计的方案。这时候在QWidget中需要加上flag:Qt::FramelessWindowHint(实现方式很容易百度就不再赘述)。但是这样带来的问题就是系统自带的标题 阅读全文
posted @ 2017-10-15 21:12 公子开明 阅读(4133) 评论(0) 推荐(0) 编辑
摘要: 开发环境:win10+vs2015+qt5.9.1 背景:QPushButton的双击事件虽然一直有,但是在双击完成之前,总会响应到单击的事件处理或者连接槽,使用很不方便。自己子类化了一个QPushButton来区分这两种点击事件的处理 首先,我们需要一个定时器来延时判断单击事件,当收到单击事件是启 阅读全文
posted @ 2017-09-27 14:39 公子开明 阅读(16678) 评论(0) 推荐(0) 编辑