qt layout 颜色_Qt开源作品6-通用视频控件

2023-11-05

## 一、前言

在之前做的视频监控系统中,根据不同的用户需要,做了好多种视频监控内核,有ffmpeg内核的,有vlc内核的,有mpv内核的,还有海康sdk内核的,为了做成通用的功能,不同内核很方便的切换,比如pro直接改一个DEFINE的变量名,所以需要将各种内核的使用方法做成一样的接口,这样看起来就很整齐,所以后面特意提炼了一个通用的视频控件,该控件没有具体的视频播放控制功能,需要根据不同的内核去调用具体的方法实现,后面还需要增加大华sdk或者其他第三方厂家的协议的时候,直接套用这个通用视频控件即可。

通用视频控件功能:

1. 可设置边框大小

2. 可设置边框颜色

3. 可设置两路OSD标签

4. 可设置是否绘制OSD标签

5. 可设置标签文本或图片

6. 可设置OSD位置 左上角+左下角+右上角+右下角

7. 可设置OSD风格 文本+日期+时间+日期时间+图片

8. 自定义半透明悬浮窗体,一排按钮

9. 悬浮按钮可自定义设置,包括背景颜色+按下颜色

10. 发送信号通知单击了哪个悬浮按钮

11. 能够识别拖进来的文件,通知url

12. 提供open close pause等接口

## 二、代码思路

//设置悬浮条//顶部工具栏,默认隐藏,鼠标移入显示移除隐藏flowPanel = new QWidget(this);flowPanel->setObjectName("flowPanel");flowPanel->setVisible(false);//用布局顶住,左侧弹簧QHBoxLayout *layout = new QHBoxLayout;layout->setSpacing(2);layout->setMargin(0);layout->addStretch();flowPanel->setLayout(layout);//按钮集合名称,如果需要新增按钮则在这里增加即可QList btns;btns << "btnFlowVideo" << "btnFlowSnap" << "btnFlowSound" << "btnFlowAlarm" << "btnFlowClose";void VideoWidget::resizeEvent(QResizeEvent *){    //重新设置顶部工具栏的位置和宽高,可以自行设置顶部显示或者底部显示    int height = 20;    flowPanel->setGeometry(borderWidth, borderWidth, this->width() - (borderWidth * 2), height);    //flowPanel->setGeometry(borderWidth, this->height() - height - borderWidth, this->width() - (borderWidth * 2), height);}void VideoWidget::enterEvent(QEvent *){    //这里还可以增加一个判断,是否获取了焦点的才需要显示    //if (this->hasFocus()) {}    if (flowEnable) {        flowPanel->setVisible(true);    }}void VideoWidget::leaveEvent(QEvent *){    if (flowEnable) {        flowPanel->setVisible(false);    }}//支持拖曳识别void VideoWidget::dropEvent(QDropEvent *event){    //拖放完毕鼠标松开的时候执行    //判断拖放进来的类型,取出文件,进行播放    if(event->mimeData()->hasUrls()) {        QString url = event->mimeData()->urls().first().toLocalFile();        this->close();        this->setUrl(url);        this->open();        emit fileDrag(url);    } else if (event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) {        QTreeWidget *treeWidget = (QTreeWidget *)event->source();        if (treeWidget != 0) {            QString url = treeWidget->currentItem()->data(0, Qt::UserRole).toString();            this->close();            this->setUrl(url);            this->open();            emit fileDrag(url);        }    }}void VideoWidget::dragEnterEvent(QDragEnterEvent *event){    //拖曳进来的时候先判断下类型,非法类型则不处理    if(event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) {        event->setDropAction(Qt::CopyAction);        event->accept();    } else if(event->mimeData()->hasFormat("text/uri-list")) {        event->setDropAction(Qt::LinkAction);        event->accept();    } else {        event->ignore();    }}

## 三、效果图

## 四、开源主页

**以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。**

1. 国内站点:[https://gitee.com/feiyangqingyun/QWidgetDemo](https://gitee.com/feiyangqingyun/QWidgetDemo)

2. 国际站点:[https://github.com/feiyangqingyun/QWidgetDemo](https://github.com/feiyangqingyun/QWidgetDemo)

3. 个人主页:[https://blog.csdn.net/feiyangqingyun](https://blog.csdn.net/feiyangqingyun)

4. 知乎主页:[https://www.zhihu.com/people/feiyangqingyun/](https://www.zhihu.com/people/feiyangqingyun/)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt layout 颜色_Qt开源作品6-通用视频控件 的相关文章

  • 程序员经常聚集的国内开发者社区总览表

    转载 http www iteye com topic 1135562 云盘 http yunpan 360 cn 不管是编程菜鸟还是程序员大牛 都需要有自己的交流圈和学习平台 根据我自己的经验总结分享一些开发者论坛 社区啊 有大牛聚集的地
  • Nginx完美解决前后端分离端口号不同导致的跨域问题

    笔者在做前后端分离系统时 出现了很多坑 比如前后端的url域名相同 但是端口号不同 例如前端页面为 http 127 0 0 1 后端api根路径为 http 127 0 0 1 8888 这样就导致跨域问题 前端设置的request he
  • 雷达辐射源调制信号仿真(代码)

    雷达辐射源调制信号仿真 说明 通过Matlab进行单载频 CW 线性调频 LFM 非线性调频 NLFM 二相编码 BPSK 四相编码 QPSK 二频编码 BFSK 四频编码 QFSK 七种雷达脉内调制信号的方仿真 环境 Matlab 直通
  • 【Web前端学习笔记】第一章 HTML常用标签

    Web前端学习笔记 第一章 HTML常用标签 文章目录 Web前端学习笔记 前言 一 HTML是什么 二 常见标签 1 文本标签 2 列表标签 3 图片标签img 4 超链接a 5 表格标签table 6 表单form 7 分区标签 总结
  • 开源软件收集

    http www 7 zip org 7 Zip 4 16 Beta 文件压缩工具 可与Windows资源管理器集成http a note sourceforge net A Note 4 2 1 可在Windows桌面放置便笺 并可提供闹
  • 大模型训练时,使用bitsandbytes报错的解决方法

    前言 在对大语言模型 LLaMa Chat GLM等 进行微调时 考虑到减少显存占用 会使用如下方式加载模型 from transformers import AutoModel model AutoModel from pretraine
  • 2021-07-31

    2周目总结 7 19 7 25 无事 打牌 7 26 8 1 河南加油 无事打牌 我似乎忘了什么 哦 还有作业没弄 作业qaq 正在补习ing
  • T027基于51单片机的智能窗帘窗户控制系统proteus仿真原理图PCB

    功能 0 本系统采用单片机STC89C52作为系统的主控芯片 1 系统采用LCD1602液晶实时显示当前时间 窗帘状态 光照强度 2 系统具有四个功能按键 支持手动按键 定时 遥控三种模式控制窗帘 3 系统采用一个轻触按键模拟限位开关 步进
  • 树的基本概念

    什么是树 一棵树是一些节点的集合 这个集合可以是空集 若非空 则一棵树由一个称作根 root 的节点r以及0个或n个非空的树T1 T2 Tn组成 我们把T1 T2 Tn称为根 root 的子树 这些子树中每一棵的根都被来自根r的一条边 ed
  • 基于sonar 的C#静态代码扫描使用总结

    1 原理简介 C 语言接入Sonar代码静态扫描相较于Java Python来说 相对麻烦一些 Sonar检测C 代码时需要预先编译 而且C 代码必须用MSbuid进行编译 如果需要使用SonarQube对C 进行代码质量分析 则需要Son
  • [Git & Jetbrains] - Jetbrains系列软件Git使用知识点(一)

    前言 基础使用技巧 正文 右下角白框处可查看项目所有分支 在分支前的星 代表提交将哪些分支更新 若要将远程分支下载到本地 选择远程分支 再点击Checkout 此处还有merge等操作选项 左下角的Git选项的第一个功能是查看当前项目改动
  • Kubectl logs 命令

    1 查看创建的状态 状态为Pending 准备中 Running状态 已经创建成功 kubectl get pods n test gt 2 查看POD详细信息 kubectl get pods o wide n test gt 3 创建p
  • angular 学习之组件component

    组件新建 ng g c name 如是想在哪个目录里建 就直接CD进入那目录里执行就可以了 系统自动生成文件 name componet less name compoent html name component spec ts name
  • 关于EXCLE 下拉框多选的设置

    关于EXCLE 下拉框多选的设置 本文转载于 https www cnblogs com boosasliulin p 5970120 html 本文转载于 https blog csdn net qq 33269520 article d
  • linux wayland体验速度,Wayland安装(转)

    Wayland 是一個極精簡的 display server 它是由 Kristian H gsberg 在工作之餘所進行的實驗性計畫 與 X server 不同 Wayland client 要負責所有的繪圖動作 server 只處理最後
  • 用openlayers在加载离线瓦片(里面附带下载瓦片的软件,请往下看)

    首先先来看看效果 这个是谷歌卫星图 然后我们说说怎么实现的吧 div style width 100 height 800px div
  • Vue + Spring Boot 项目实战项目简介

    参考https learner blog csdn net article details 88925013 githubhttps github com Antabot White Jotter
  • Java使用Spire.Pdf实现PDF添加图片水印

    通过本文你将学到 Spire Pdf是什么 如何在项目中引入Spire Pdf依赖 项目中基于Spire Pdf实现PDF添加图片水印 一 Spire Pdf是什么 1 Spire Pdf是成都冰蓝科技有限公司开发的一款简单易用 功能强大的
  • 雨课堂 文件和磁盘练习(1)

    若某文件系统索引结点 inode 中有直接地址项和间接地址项 与单个文件长度有关的因素是 间接地址索引的级数 地址项的个数 文件块大 与单个文件长度无关的因素是 索引结点的总数 相关解释 如果系统中有1000个 索引结点 说明有1000个物

随机推荐

  • 面试官:为什么Vue中的v-if和v-for不建议一起用?

    一 作用 v if 指令用于条件性地渲染一块内容 这块内容只会在指令的表达式返回 true值的时候被渲染 v for 指令基于一个数组来渲染一个列表 v for 指令需要使用 item in items 形式的特殊语法 其中 items 是
  • PID温控实验平台搭建(四)——PID温控系统实验代码讲解

    PID温控实验平台搭建 一 PID基础知识介绍 二 PID进阶知识介绍及源码分享 三 从零开始搭建STM32温控实验平台 四 PID温控系统代码讲解 五 最终实验现象与总结 文章目录 前言 一 主程序功能描述 二 部分代码讲解 1 PID程
  • 一种基于 TrustZone 的内生可信执行环境构建方法

    摘要 针对安全模块扩展技术面临的安全风险以及性能较低的问题 提出了一种基于TrustZone技术构建内生可信执行环境的方法 重点研究了计算资源隔离分配 固件可信度量 安全存储 全信任链构建等关键技术 设计了内生可信执行环境系统结构与可信计算
  • Laplace近似积分

    拉普拉斯方法又称为拉普拉斯近似 Laplace Approximation 它可以用来计算一元或多元积分 这里的思想类似于上篇博客中所讲的使用Laplace近似分布一样 这里把
  • c/c++中读入字符串(包含空格)

    1 scanf函数 scanf函数一般格式为scanf s st 但scanf默认回车和空格是输入不同组之间的间隔和结束符号 所以输入带空格 tab或者回车的字符串是不可以的 解决方法如下 利用格式符 它的作用为扫描字符集合 Scanf c
  • 【Transformer】21、AdaViT: Adaptive Tokens for Efficient Vision Transformer

    文章目录 一 背景 二 方法 三 效果 一 背景 Transformer 在多个任务上都取得了亮眼的表现 在计算机视觉中 一般是对输入图像切分成多个 patch 然后计算 patch 之间的自注意力实现下游任务 但由于自注意力机制的计算量是
  • ajax跨域session失效,request跨域获取session失效

    如下代码 传到另外一个域名就获取不到session了 localhost 12402 Home Index Session MemberUser 123456 string url api Home GetTop8FileDown stri
  • 【算法】直接插入排序解析

    活动地址 CSDN21天学习挑战赛 作者 柒号华仔 个人主页 欢迎访问我的主页 个人信条 星光不问赶路人 岁月不负有心人 个人方向 主要方向为5G 同时兼顾其他网络协议 编解码协议 C C linux 云原生等 感兴趣的小伙伴可以关注我 一
  • 正则表达式分割图片和匹配图片正则

    正则表达式分割图片 正则表达式 又称规则表达式 英语 Regular Expression 在代码中常简写为regex regexp或RE 计算机科学的一个概念 正则表达式通常被用来检索 替换那些符合某个模式 规则 的文本 正则表达式是对字
  • Centos7一点心德

    1 在centos7中发现没有table键补全的命令 需要手动去输出 效率不高 但是yum提供了自动补的命令安装 root localhost systemctl restart htt 死活补全不了 常用的命令还可以接受 碰到不常用的命令
  • 【大数据之Kafka】十三、Kafka消费者生产经验之分区的分配及再平衡、数据积压和消费者事务

    1 分区的分配及再平衡 一个consumer group中有多个consumer组成 一个 topic有多个partition组成 使用分区分配策略决定由哪个consumer来消费哪个partition的数据 Kafka有四种主流的分区分配
  • 增加tomcat并发量

    之前在做tomcat的最大并发量测试 现总结如下 tomcat默认的连接是线程阻塞的 即protocol配置为 HTTP 1 1 那么tomcat的最大连接数就受maxThreads和account的限制 maxThreads是最大的线程数
  • Altium Designer 19.1.18 - 将修改后的 PCB 封装更新到当前 PCB 中

    文章目录 将修改后的 PCB 封装更新到当前 PCB 中 参考 将修改后的 PCB 封装更新到当前 PCB 中 打开 PCB Library 选择需要更新到当前 PCB 中的 PCB 封装 使用鼠标右键选择 Update PCB With
  • 一文详解微服务架构

    要理解微服务 首先要先理解不是微服务的那些 通常跟微服务相对的是单体应用 即将所有功能都打包成在一个独立单元的应用程序 从单体应用到微服务并不是一蹴而就的 这是一个逐渐演变的过程 本文将以一个网上超市应用为例来说明这一过程 最初的需求 几年
  • 火柴棒等式 C语言

    Problem Description 给你n根火柴棍 你可以拼出多少个形如 A B C 的等式 等式中的A B C是用火柴棍拼出的整数 若该数非零 则最高位不能是0 用火柴棍拼数字0 9的拼法如图所示 注意 1 加号与等号各自需要两根火柴
  • 微信中发现的问题,做一分析(见同目录其他文)

    1 基本语法 这包括static final transient等关键字的作用 foreach循环的原理等等 今天面试我问你static关键字有哪些作用 如果你答出static修饰变量 修饰方法我会认为你合格 答出静态块 我会认为你不错 答
  • linux 网络编程---->多路复用:select实例!

    好吧 我承认找了好久 网上都没有像样的完整的实例 然后自己参照书自己写一个吧 gt server 端代码 gt server c include
  • 上传图片的方法(大白话讲解)

    上传图片的方法 在上传文件的时候需要知道其原理 因为我们的数据库是无法存储数据的 所以我们只能使用地址来找 所以数据库中应该村的是文件路径 其次上传图片是属于上传文件的一种方式 所以也要学会上传文件的方法 在之后呢也要注意上传图片和对象的关
  • allowedOriginPatterns和allowedOrigins方法有什么不同

    allowedOriginPatterns 和 allowedOrigins 都是用来设置允许跨域请求的来源 其中 allowedOriginPatterns 是在 Spring 5 3 版本引入的新方法 而 allowedOrigins
  • qt layout 颜色_Qt开源作品6-通用视频控件

    一 前言 在之前做的视频监控系统中 根据不同的用户需要 做了好多种视频监控内核 有ffmpeg内核的 有vlc内核的 有mpv内核的 还有海康sdk内核的 为了做成通用的功能 不同内核很方便的切换 比如pro直接改一个DEFINE的变量名