自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

darkGer的博客

勿在浮沙筑高台

  • 博客(50)
  • 资源 (2)
  • 收藏
  • 关注

原创 QEventLoop使用的坑

【代码】QEventLoop使用的坑。

2022-08-19 18:25:14 1418 3

原创 一、webrtc编译容易遇到的问题

webrtc编译

2022-08-13 14:35:33 826

原创 04-vlc完整的播放mp4文件流程

一、播放列表线程功能二、列表对象vlc与c++一样,有着封装的结构,一个指针指向的对象,有公共数据和私有数据,公共对象如下:struct playlist_t{ VLC_COMMON_MEMBERS playlist_item_array_t items; //播放项数组//当前播放项 playlist_item_array_t current; /**< Items currently being played */ int

2021-12-21 22:45:42 3398

原创 03-vlc模块的加载机制

文章代码基于3.0.6版本一、vlc模块功能1、介绍vlc是高度模块化的,大部分功能都是由不同类型的模块完成的,有200-400个模块。2、重要概念vlc模块有两个主要属性1)capability它描述了模块的类别,主要类别有:audio filter音频过滤器, 如:equalizeraudio mixer声道混合器, 如: downmixeraudio output音频输出,如: Windows DirectX audio outputdecoder解码器, like t

2021-12-19 17:44:12 1219

原创 02.vlc 变量.md

一、变量结构variable_tstruct variable_t{ char * psz_name; /**< The variable unique name (must be first) */ /** The variable's exported value */ vlc_value_t val;//变量真正的值,可以是int、bool、float等 /** The variable display name, mainly for use

2021-12-18 20:30:28 207

原创 QTimer使用不当崩溃

一、坑的现象程序崩溃二、遇坑的原因qt中遇到耗时的操作需要等待,通常会使用QEvenloop去等待,并使用定时器设置超时时间,使得界面不会卡住。但使用不当会造成问题,错误写法是:void xx::waitTime(const int &nTimeout){ //超时保护 QTimer::singleShot(nTimeout, [&event](){ m_eventLoop.quit(); }); m_eventLoop.exec()

2021-12-17 17:41:37 4184

原创 01-vlc-object对象

一、vlc_object对象1、vlc_object对象结构vlc中所有对象都包含vlc_object,类似c++中的继承,都从vlc_object中继承过来,如stream_t、input_thread_t等,vlc播放环节必有的一些对象都是需要从vlc_object继承struct vlc_object_t{ VLC_COMMON_MEMBERS //此宏展开如下:};struct vlc_object_t{ const char *psz_object_type;//对

2021-12-15 20:36:04 433

原创 ubuntu 20 vlc源码编译

一. 获取最新源码可以上官网下载稳定版本,或者使用git获取最新代码,如下:git clone git://git.videolan.org/vlc.git二.安装第三方依赖库自动化工具部署apt-get install git build-essential pkg-config libtool automake autopoint gettext第三方库apt-get update sudo apt-get -y install libvorbis-dev libogg-dev

2021-12-14 12:37:57 1057

原创 音视频基础概念

一、视频常见格式1、MPEG/MPG/DATMPEG(运动图像专家组),包括MPEG-1,MPEG-2和MPEG-4在内的多种视频格式。2、AVIAVI,音频视频交错。avi格式调用方便,图像质量好,压缩标准可任意选择。3、MOV在mac平台使用的动态的基于Indeo压缩算法的MOV4、ASF在线观看视频的一种文件压缩格式。ASF使用了MPEG4的压缩算法,压缩率和图像的质量都很不错。5、WMV一种独立于编码方式的在Internet上实时传播多媒体的技术标准。优点是:可扩充的媒体类型、本

2021-10-25 21:39:44 972

原创 qt使用opengl简单的例子-01

一、重要流程步骤二、重要概念1、 渲染管线:它是一系列数据处理过程,并且将应用程序的数据转换到最终渲染的图像。首先接受用户提供的几何数据,并且将它送到一系列着色器中处理。2、缓存对象openGl需要将所有的数据都保存在缓存对象中,它相当于由opengl服务端维护的一块内存区域,创建数据缓存,如glBufferData。3、绘制当将缓存初始化完毕之后,我们可以通过调用opengl的一个绘制命令来请求渲染几何图元, 如glDrawArrays。opengl的绘制通常就是将顶点数据传输到openG

2021-08-26 23:15:48 1222

原创 qt 按钮背景变成黑框

一、坑的现象部分平台上QPushButton背景变成黑框二、坑的原因如果你在设置QPushButton背景的时候,只设置了背景,如:background-color:transparent;但是没有设置边框属性,就可能会出现按钮黑框的现象,这是因为这是因为,默认情况下,QPushButton绘制一个完全与背景色重叠的本地边框,如果只设置了背景,没设置边框,边框的窗口会将背景覆盖三、正确操作如下:同时设置背景和边框属性background-color:transparent; borde

2021-07-11 17:47:52 1406

原创 qt 从布局中删除子控件

一、坑的现象只是简单的将子控件从父窗口的布局中移除,出现内存泄露二、遇坑的原因从布局中移除控件,只是子控件不在布局中显示,子控件的内存实际并未释放三、正确写法void deleteItem(QLayout *layout){ QLayoutItem *child; while ((child = layout->takeAt(0)) != nullptr) { //setParent为NULL,防止删除之后界面不消失 if(child

2021-07-11 17:31:56 3650 1

原创 qt QObject对象释放

一、坑的现象QObject对象释放不当,会导致崩溃或者内存泄露二、遇坑的原因1、 如果事件队列中, 某QObject对象有事件等待未处理,直接delete后,再接着执行它的槽函数会导致崩溃例子://创建一个QObject对象,并且有一个槽函数class A : public QObject{ Q_OBJECTpublic: explicit A(QObject *parent = nullptr); ~A() { qDebug() <&l

2021-07-06 13:44:37 1374

原创 qt connect多次

###1、坑的现象有时项目中一个信号发出,对应连接的槽函数会执行多次,普通刷新界面都不会有问题,但是特别频繁的就会影响性能,如果是改变数据的,更有甚者会异常崩溃###2、遇坑的原因qt中同一实例的同一信号和槽,connect多次,当信号发出时,槽函数会被调用多次###2、例子#include "ui_widget.h"#include "QDebug"Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::

2021-06-14 21:52:11 2641 2

原创 类型推导auto 和 decltype

一、auto 的规则auto 不能出现二义性const auto a = 1, b = 1.0;//编译报b错误auto 只相当于一个类型声明的"占位符"const auto a = 1, b; //编译器报错,必须给b赋值,让编译推导出类型二、auto 的推导规则1.auto 不声明为指针,也可以推导出指针类型int x = 0; auto *b = &x; //auto 被推导为int auto & c = x; // auto 被推导为int *

2021-01-30 19:20:45 306

原创 qt客户端技术杂谈-字符编码转换(06)

客户端开发不可避免会遇到中文,这个时候会出现乱码的问题,所以编码集之间转换就很重要了。一、编码概念ASCIIASCII 每个字符占据1bytes,用二进制表示的话最高位必须为0(扩展的ASCII不在考虑范围内),因此ASCII只能表示128个字GB2312GB2312 最早一版的中文编码,每个字占据2bytes。由于要和ASCII兼容,那这2bytes最高位不可以为0了(否则和ASCII会有冲突)。在GB2312中收录了6763个汉字以及682个特殊符号,已经囊括了生活中最常用的所有汉字3.

2020-11-23 14:58:49 363 1

原创 qt客户端技术杂谈-线程池(05)

一、qt线程池线程池的概念只要是程序员大概都知道一些,这里就不重复进行。但大部分线程池都是针对后台业务。那么客户端使用线程池会有什么不同呢,特别是qt客户端,使用线程池获取返回值,会不会影响界面阻塞等。二、实现原理实现机制:线程池使用生产者消费者模型,维护一个任务队列,提供一个外部接口给上层应用插入任务到队列中,消费者线程从队列中取走任务,并执行。为了不影响qt本身的消息循环,提供一个同步接口,实现里使用eventLoop,任务执行完后发送信号给eventLoop,使它退出。###三具体实现直接

2020-09-01 13:39:18 517

原创 qt自定义控件样式09-QScrollBar

注释只为解释,qss语法并不能直接这样写,美化控件时,下面的所有选项并不需要全部进行设置,自行选择一、前言//滚动条竖直方向样式QScrollBar:vertical { border: 2px solid grey; background: #32CC99; width: 15px; margin: 22px 0 22px 0; }//滚动条滑块样式 QScrollBar::handle:vertical { background: white

2020-06-23 17:46:44 482

原创 qt自定义控件样式08-QListView

注释只为解释,qss语法并不能直接这样写,美化控件时,下面的所有选项并不需要全部进行设置,自行选择一、QListViewQListView可以用来以列表的形式展示数据二、qss样式QListView{ //子类中使用的备用颜色。如果未设置此属性,则默认值为调色板的AlternateBase角色设置的值 alternate-background-color: yellow;}QListView{ //控制QListVIew中选择是覆盖整个行还是仅覆盖文本的范围 sh

2020-06-23 17:19:26 2450 2

原创 qt自定义控件样式07-QProgressBar

注释只为解释,qss语法并不能直接这样写,美化控件时,下面的所有选项并不需要全部进行设置,自行选择一、前言进度条控件的border、chunk和text-align都可以自定义或者默认,但是有一个自定义,其他的属性和子控件都得定义,例:QProgressBar { border: 2px solid grey; border-radius: 5px; text-align: center;//文字的位置}QProgressBar::chunk { backgrou

2020-06-19 13:07:07 670

原创 qt自定义控件样式06-QCheckBox

注释只为解释,qss语法并不能直接这样写,美化控件时,下面的所有选项并不需要全部进行设置,自行选择一、QCheckBoxQCheckBox{ spacing: 5px;}QCheckBox::indicator//指示器子控件 { width: 13px; height: 13px;}QCheckBox::indicator:unchecked //指示器未选上{ image: url(:/images/checkbox_unchecked.png);

2020-06-19 12:44:31 1080

原创 qt自定义控件样式05-QMenu

注释只为解释,qss语法并不能直接这样写,美化控件时,下面的所有选项并不需要全部进行设置,自行选择一、QMenuQMenu{ background-color: white;//背景颜色 margin: 2px; //菜单与周围部件距离}QMenu::item { padding: 2px 25px 2px 20px;//菜单子项中内容与边框的距离 border: 1px solid transparent; 边框样式}QMenu::item:select

2020-06-19 12:40:29 1675 1

原创 qt客户端技术杂谈-看门狗03

一、前言客户端业务一旦复杂,复杂业务不得不使用子线程执行,以免界面卡顿。但是用到多线程就很难跨过一个问题:线程死锁。程序一旦死锁,特别是主线程卡住,界面就不能使用。如果客户端需要长时间运行,这样会造成很大的不便,所以看门狗就必须用起来了,监督主线程是否卡住,如果卡住便重启客户端。二、看门狗技术看门狗涉及到的技术不多,也不复杂,但也稍微有点小巧,有需要的可以参考下,直接上代码,再分析typedef std::chrono::steady_clock SteadyClock;UIWatchDog

2020-06-18 17:23:14 1704 1

原创 qt客户端技术杂谈-客户端异常崩溃处理:dump、corefile 02

一、前言客户端有bug很正常,但是bug导致程序崩溃,就必须重视起来,所以为了更好的定位崩溃原因,需要做一些特殊处理。因为只做过linux和window平台,所以下面只针对这两个平台列出处理办法,mac平台的恕无能为力了。二、 win下崩溃window下程序crash,可以产生dump文件,然后使用windbg工具来显示dump文件中的崩溃,从而定位问题。下面就qt来分析下,具体如何利用dump分析问题。让release版本也能生成dump文件在每个.pro文件中加上:win32:{

2020-06-18 13:42:04 630

原创 qt客户端技术杂谈-日志库01

###一、日志库选型日志库现在有很多,c++中较为出名的有log4cxx、spdlog等,但qt中要是用的不是很复杂,可以采用qt自带的日志机制,方便且实用###二、qt日志机制实现实现一个注册函数void DemoLog::outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)注册qInstallMessageHandler(outputMessage);/

2020-06-18 12:58:42 428

原创 qt自定义控件样式04-QPushButton

注释只为解释,qss语法并不能直接这样写,美化控件时,下面的所有选项并不需要全部进行设置,自行选择QPushButtonQPushButton { color:red; //前景/字体颜色 background-color:rgb(30,75,10); //背景颜色 border-style:outset; //边框风格 border-width:2px; 边框宽度 border-color:rgb(10,45,110); //边框颜色

2020-06-17 14:19:50 994

原创 qt自定义控件样式03-QLineEdit

注释只为解释,qss语法并不能直接这样写,美化控件时,下面的所有选项并不需要全部进行设置,自行选择一、QLineEditQLineEdit是一个单行文本编辑控件。使用者可以通过很多函数,输入和编辑单行文本,比如撤销、恢复、剪切、粘贴以及拖放等。通过改变QLineEdit的 echoMode() ,可以设置其属性,比如以密码的形式输入。二、qss样式QLineEdit{border: 1px solid gray;//边框border-radius: 4px;//边框圆角padding:

2020-06-17 14:18:07 4169

原创 qt自定义控件样式02-QSpinBox

一、QSpinBoxQSpinBox 用于整数的显示和输入,一般显示十进制数,也可以显示二进制、十六进制的数,而且可以在显示框中增加前缀或后缀二、qss样式QSpinBox {padding-right: 15px; /* make room for the arrows */border-image: url(:/images/frame.png) ;//设置可伸缩的图片borde...

2019-08-02 14:00:30 3464

原创 qt 自定义控件样式01-QComboBox

一、效果颜色没有定的非常亮丽,可以自行设置,只是将日常设置QComboBox样式用到的一些属性列出来,后续系列也是一样二、qss样式QComboBox {border: 1px solid gray;//设置边界线样式border-radius: 3px;//设置控件四周圆角padding: 1px 18px 1px 3px;//设置下拉框未打开时显示的内容与边界的距离min-wi...

2019-08-02 11:43:07 1242

原创 QSS样式表语法

一、样式表存在形式qss文件存在,可以通过文件加载进行设置直接写在ui文件或者代码中二、盒模型从外到内margin rectangle:最外面的矩形,主要是负责与其他窗口部件间的距离border rectangle:包围padding rectangle, 为边界预留空间,可认为是窗口的外框线padding rectangle: 包围content rectangle,由pad...

2019-08-01 10:45:24 2005

原创 设置窗体透明的几种方式

一、通过调色板在构造函数中添加代码QPalette pal = palette();pal.setColor(QPalette::Backgroud, QColor(0x00, 0xff, 0x00, 0x00));this->setPalette(pal);效果:窗口整体透明,但窗口控件不透明,QLable控件只是字显示,控件背景色透明,窗体客户区完全透明二、setAttri...

2019-08-01 09:29:11 2696

原创 base64的实现

一、概念Base64这个术语最初是在“MIME内容传输编码规范”中提出的。Base64不是一种加密算法,虽然编码后的字符串看起来有点加密的赶脚。它实际上是一种“二进制到文本”的编码方法,它能够将给定的任意二进制数据转换(映射)为ASCII字符串的形式,以便在只支持文本的环境中也能够顺利地传输二进制数据。例如支持MIME的电子邮件应用,或需要在XML中存储复杂数据(例如图片)时。二、实现CE...

2019-07-26 20:29:52 268

原创 std::shared_ptr 详解

##一、介绍shared_ptr是一种智能指针(smart pointer),作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除。##二、shared_ptr的构造和析构#include <iostream>...

2019-07-13 22:34:25 67532 4

原创 容器类:QVector、QList、QSet、QMap使用

一、介绍std中有几个常用的容器:vector、List、set、map,Qt中也封装了类似的容器。Qt 的容器类提供了隐式数据共享、不可变的特性,并且为速度做了优化,具有较低的内存占用量等。另外一点比较重要的,它们是线程安全的,且这些容器类是平台无关的 。二、QVector1、添加元素 QVector<int> intVec; intVec.append(10);......

2019-06-24 15:26:00 10250 3

原创 qt 自定义的ip控件

qt默认没有ip控件,那就自己封装一个 ,window和linux均可使用直接上代码1、myipaddredit.h#pragma once #include <QFrame>#include <QMouseEvent>#include <QKeyEvent>class QLineEdit; class QLabel; class MyIp...

2019-06-24 10:50:13 1154

原创 contos 7 qt打包环境安装

linuxdeployqt下载地址:https://github.com/probonopd/linuxdeployqt/releasespatchelf下载地址:https://nixos.org/releases/patchelf/patchelf-0.9/patchelf-0.9.tar.gz1、下载上述地址中的linuxdeployqt,点击点击下载linuxdeploy-co...

2019-06-21 13:36:41 263

原创 04.c++与qml混合编程

一、定义可以导出的c++类前提条件,使用元对象系统:1.从QObject或QObject的派生类继承2.使用Q_OBJECT宏(1).只要是信号或者槽,都可以在QML中访问(2).Q_INVOKABLE 宏在定义一个类的成员函数时使用Q_INVOKABLE宏来修饰,就可以让该方法被元对象系统调用(3).Q_ENUMS 宏如果你要导出的类定义了想在QML中使用的枚举类型,可以使用Q_...

2019-06-20 22:44:45 247

原创 03.模型视图和代理

模型视图和代理概念:数据被称做model(模型), 可视化处理称做view(视图),在QML中,model与view都通过delegate连接起来一、基础模型Repeater中的model,Repeater元素适合有限的静态数据二、动态视图ListView和GridView元素都是基于Flickable(可滑动)区域的元素,因此用户可以放入更大的数据ListView与Repeat...

2019-06-20 22:43:02 131

原创 02.qml基本元素

qml 基本元素元素可分为可视化元素和非可视化元素一、可视化元素可视化元素如: Item(基础元素对象)、Rectangle(矩形框)、Text(文本)、Image(图像)、MouseArea(鼠标区域)基础元素对象:所有可视化元素的基础对象,所有其他的可视化元素都继承自Item。它自身不会有任何回执操作,但是定义了所有可视化元素共有的属性矩形框元素: Rectangle, ...

2019-06-20 22:41:51 192

原创 01.qml基础语法

一、基础语法每一个QML文件都需要一个根元素一个元素使用它的类型声明,然后使用{}进行包含元素拥有属性,他们按照name:value的格式来赋值任何在QML文档中的元素都可以使用他们的id进行访问(建议根元素id为root)元素可以嵌套,这意味着一个父元素可以拥有多个子元素。子元素可以通过访问parent关键字访问他们的父元素二、属性语法id是一个非常特殊...

2019-06-20 22:40:30 170

JNI经典教程-开发必备6.pdf

jni电子教程,中文版,非常实用

2019-07-19

各种音视频编解码学习详解---bitbit---博客园.pdf

各种音视频编码解码学习详解

2019-07-19

空空如也

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

TA关注的人

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