发布于2020/04/25 13:08
QT学习总结--音视频采集编码封装    我们在采集到音频和视频后,需要对数据进行编码压缩,我们需要三个AVFormatContext结构体,两个输入(音频,视频),一个输出。   实现步骤如下: 采集的步骤上篇文章已经详细说明了,这里着重于编码输出的过程:         1. 初始化AVFormatContext输出上下文avf...
  • 183
阅读全文
发布于2020/04/17 10:46
QT学习总结--音视频采集     完成直播系统的第一步是采集本地音视频数据。采集本地数据要使用到FFmpeg的libavdevice 类库,我们可以利用它来采集设备数据。       使用libavdevice 需要包含其头文件,并对其注册。 #include "libavdevice/avdevice.h" ............ .......
  • 164
阅读全文
发布于2020/04/11 11:52
QT学习总结--FFmpeg+SDL的播放器     我们在开发中可能会用到一些播放器,但有时现有的播放器并不能满足我们自定义的需求,这时候需要我们自己来写播放器,这会用到FFmpeg和SDL。FFmpeg是对文件进行解码的工具,SDL可以将解码后的数据转化图像,声音播放。        FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开...
  • 220
阅读全文
发布于2020/04/04 12:46
QT学习总结--智能指针   在上一篇文章中提到了我有时候会忘记删除指针,导致程序异常终止的问题,qt中存在智能指针,可以帮助自动我们销毁指针。     什么是智能指针呢? 智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象 。qt中最常用的智能指针是 QSharedPointer 和 QScopedPointer 两个类。     QShared...
  • 169
阅读全文
发布于2020/04/03 17:56
QT学习总结--多线程断点下载    实现多线程下载文件,先考虑如何实现动态的添加组件和线程,在这里采用了QListWidget来做为下载项目的容器,比较的简单,将下载组件组合在一个自定义容器类DownLoadItem里,这样可以很方便的创建下载项目。     最终效果:  [图片]      先说一下组件创建遇到的问题(下载项目重叠): ...
  • 203
阅读全文
发布于2020/03/31 20:02
QT学习总结--实现多线程的两种方式 qt实现多线程的方式大致分为两种:      1. 直接继承自QThread,重写run函数      2. 继承QObject,通过 moveToThread将事件添加到线程中处理   第一种方式:   #include "mythread.h" #include <QDeb...
  • 187
阅读全文
发布于2020/03/31 13:01
QT学习总结--断点下载     想要利用qt完成断点下载需要了解一下http请求的Range字段。 Range字段的作用是支持http协议的范围请求,用法如下:    Range:bytes=1-99  表示下载1到99字节    Range:bytes=100-   表示下载100字节之后的所有字节   ...
  • 189
阅读全文
发布于2020/03/28 11:09
QT学习总结--视频播放   qt中有QMediaPlayer这个类可以实现媒体的播放。下面用QMediaPlayer类来实现avi格式的视频的播放。使用时需要pro文件中添加:QT+= multimedia       QMediaPlayer提供了一些方法接下来会用到:       1.setMedia(Qu...
  • 169
阅读全文
发布于2020/03/25 21:17
QT学习总结--http发送接收json数据    最近两天做了一个qt为客户端,发送json数据到java的练习,期间出现了一些问题,做个总结。      先看一下实现代码:   qt端:      实现步骤很简单: 1. 绑定 QNetworkAccessManager 的finished信号与槽函数 2. 设置请求地址 3. 设...
  • 149
阅读全文
发布于2020/03/23 22:09
QT学习总结--网络通信    将上次的登录改为TCP/IP通信。通信主要用到了两个类QTcpServer和QTcpsocket。QTcpServer对象负责监听是否有客户端连接此服务器,它是通过listen函数监听的。服务端和客户端通过套接字QTcpSocket进行通信。   服务端代码: Server::Server(QObject *parent): QObject(paren...
  • 139
阅读全文
发布于2020/03/22 22:12
QT学习总结--文件读写     这次将上一个登录界面由Qsqlite版本改为txt版本,主要改动的地方是login函数。   bool MainWindow::login(QString userName, QString password){ // 之前的版本 // DataBase db; // //查询密码 // QString result =...
  • 146
阅读全文
发布于2020/03/22 10:29
QT学习总结--Qsqlite   最近在学习QT,做了一个Qsqlite的登录功能。   首先是设计登录界面:   void MainWindow::init(){ //全屏 showFullScreen(); //设置用户名输入行的坐标,图标,圆角边框,提示信息 ui->userNameLine->setGeometry(750,400,420...
  • 135
阅读全文
发布于2020/03/11 20:03
状态模式处理订单 问题场景:     对于一个订单在不同的阶段有不同的状态,不同的状态处理逻辑也不一样。如果使用if/esle来判断订单状态,从而实现不同的操作。这样难以应对变化,增加一个状态,我们就需要增加一个分之,还可能影响原有逻辑判断。   if(待支付){ xxx }else if(已付款){ xxxx }else if(代发货){ xxxx }e...
  • 168
阅读全文
发布于2020/03/10 19:59
利用状态模式去除多个if/else     假如现在有一个这样的问题, 如果一个集合存储A,B,C的对象(B继承了A,C继承了B),现在需要对 这个集合进行遍历,根据取出来的元素不同对待,那么我们应该怎么做呢。     我们一般都会用if/else语句进行判断处理,如下:   public static void main(String[] args) thro...
  • 212
阅读全文
发布于2020/02/29 13:07
设计模式-单例模式及其拓展 单例模式: 指一个类只有一个实例,且该类能自行创建这个实例的一种模式。   单例模式的用途:      1. 一个类只生成一个对象,可以节省内存资源、保证数据内容的一致性,避免出现当某类需要频繁实例化,而创建的对象又频繁被销毁的情况。      2. 适用于对象需要被共享的场合。共享对象可...
  • 184
阅读全文
发布于2020/02/28 20:09
简单工厂+反射机制改进抽象工厂模式 抽象工厂模式是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。   抽象工厂模式的主要优点如下: 1. 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程; 2. 在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则; 3. 可...
  • 183
阅读全文