• QT 视频窗口 OSD

效果展示

  1. 悬浮 FormSensorPannel 设置

在构造函数中

1》//设置 Qt::FramelessWindowHint|Qt::Tool

Qt::Tool 表示小部件是一个工具窗口。 工具窗口通常是一个小窗口,具有比通常的标题栏和装饰更小的窗口,通常用于工具按钮的集合。 如果有父级,则工具窗口将始终保留在其顶部。

注意: 这里不能设置成Qt::Tool//Qt::WindowStaysOnTopHint | 否则 FormSensorPannel 会悬浮所有窗口之上。

注意这句话 :如果有父级,则工具窗口将始终保留在其顶部

setWindowFlags( Qt::FramelessWindowHint|Qt::Tool );// |Qt::Tool//Qt::WindowStaysOnTopHint |

2》

// 设置窗口透明

this->setAttribute(Qt::WA_TranslucentBackground, true);

2.FormSensorPannel 中可以重载 paintEvent(QPaintEvent * event)

paintEvent(QPaintEvent * event)

//设置边框 背景

void FormSensorPannel::paintEvent(QPaintEvent * event) { int colorR(192); //默认背景颜色和透明度为QColor(135,206,250,122) 浅蓝色 int colorG(192); int colorB(192); int colorA(100); QPainter painter(this); painter.setBrush(QColor(colorR,colorG,colorB,colorA));//最后一位是设置透明属性(在0-255取值) painter.setPen(QColor(colorR,colorG,colorB,colorA)); painter.drawRect(0,0, this->width(), this->height()); }

3.在videoWidget 中

1》 创建FormSensorPannel

m_pFormSensorPannel =new FormSensorPannel(this);

注意必须指定 父窗口。否则FormSensorPannel 回脱离窗口,在桌面,或其他窗口上悬浮。如下图

2》 设置Qt::Tool 后, FormSensorPannel会脱离父窗口坐标

调用 setGeometry 是相对桌面坐标

如 m_pFormSensorPannel->setGeometry(0,0,100,40);在桌面左上角显示了

该使用 move函数 移动到视频窗口

m_pFormSensorPannel->move(this->mapToGlobal(QPoint(0, 5)));

如图移动到视频上了

3. previewItem 重载 showEvent(QShowEvent *event); hideEvent(QHideEvent *event);

视频previewItem 隐藏后FormSensorPannel 并不会隐藏

如图,16路视频窗口隐藏只剩下1路,但是FormSensorPannel 都没有隐藏

需要对previewItem 重载

void showEvent(QShowEvent *event);

void hideEvent(QHideEvent *event);

void previewItem::showEvent(QShowEvent *event) { m_pFormSensorPannel->show(); } void previewItem::hideEvent(QHideEvent *event) { m_pFormSensorPannel->hide(); }

当16路切换4路如图

4. previewItem 重载 resizeEvent(QResizeEvent *event)

m_pFormSensorPannel->resize(this->width() - (2 * 2),40); m_pFormSensorPannel->move(this->mapToGlobal(QPoint(0, 5)));

5.previewItem 重载 moveEvent(QMoveEvent *event)

m_pFormSensorPannel->resize(this->width() - (2 * 2),40); m_pFormSensorPannel->move(this->mapToGlobal(QPoint(0, 5)));

6.mainWindow 移动move 对 FormSensorPannel 影响

mainWindow 移动并不会 触发 previewItem 的moveEvent事件。

mainWindow 重载 moveEvent 并且查找出说要previewItem 子控件。

通过 QApplication::sendEvent(pWidget, event); 发送移动事件

void MainWindow::moveEvent(QMoveEvent *event) { QList<previewItem*> labelList = findChildren<previewItem*>(); qDebug()<<Q_FUNC_INFO<<labelList.size(); foreach(previewItem *pWidget,labelList) { QApplication::sendEvent(pWidget, event); } }

7.mainWindow 最小化影响

mainWindow 最小化不会 触发 previewItem。

mainWindow 重载 moveEvent 并且查找出说要previewItem 子控件。

void MainWindow:: hideEvent(QHideEvent *event) { QList<previewItem*> labelList = findChildren<previewItem*>(); qDebug()<<Q_FUNC_INFO<<labelList.size(); foreach(previewItem *pWidget,labelList) { QApplication::sendEvent(pWidget, event); } }

QT 视频窗口 OSD 使用详解相关推荐

  1. Qt QLineEdit单行输入框用法详解

    Qt QLineEdit单行输入框用法详解 QLineEdit 是 Qt 提供的一个控件类,它直接继承自 QWdiget 类,专门用来创建单行输入框,如下图所示: 图 1 单行文本输入框 实际开发中, ...

  2. 【H.264/AVC视频编解码技术详解】二十三、帧间预测编码(1):帧间预测编码的基本原理

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  3. 各种音视频编解码学习详解之 编解码学习笔记(十三):容器

    最近在研究音视频编解码这一块儿,看到@bitbit大神写的[各种音视频编解码学习详解]这篇文章,非常感谢,佩服的五体投地.奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读.大神博客传送门 ...

  4. 音视频编解码学习详解

    音视频编解码学习详解 目录(?)[+] 编解码学习笔记二codec类型 编解码学习笔记三Mpeg系列Mpeg 1和Mpeg 2 编解码学习笔记四Mpeg系列Mpeg 4 编解码学习笔记五Mpeg系列A ...

  5. Qt QListWidget列表框用法详解

    Qt QListWidget列表框用法详解 很多应用程序中需要以列表的形式向用户展示数据(资源),比如 Windows 操作系统会以列表的方式展示很多张桌面背景图(如图 1a) 所示),再比如很多音乐 ...

  6. Qt之布局设置setLayout详解-源码剖析(下)

    一.简述 大家好,我是前行中的小猪,今天呢给大家继续上一篇Qt之布局设置setLayout详解(上)之后的内容,再给大家进行一下拓展. 1.1 setLayout源码剖析 上篇我们说到如何清空部件上的 ...

  7. 视频教程-H.264/AVC视频编解码技术详解-其他

    H.264/AVC视频编解码技术详解 毕业于上海大学通信与信息工程学院,研究生学历,硕士学位.研究方向为视频处理与传输,对H.264/AVC.H.265/HEVC.AVS.AVS+.AVS2等视频编解 ...

  8. Qt Quick - Popup控件详解

    Qt Quick - Popup控件详解 Popup是基于Qt Quick中的一种弹出式用户界面控件.它可以和Window或ApplicationWindow一起使用.如果想要确保一个Popup在场景 ...

  9. 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

最新文章

  1. freemarker的${!}
  2. 从源码全面剖析 React 组件更新机制
  3. 18.了解各种与排序有关的选择
  4. pytest teardown 未执行_python3+pytest+allure框架搭建之pytest详解(一)
  5. Android中ICS4.0Launcher中Fold的功能详解【androidICS4.0--Launcher系列三】
  6. idc机房运维巡检_24小时保姆式机房巡检设备设计-机房巡检机器人设计
  7. Vmware 安装安卓x86虚拟机并运行APP
  8. [Android] 选项卡组件TabHost
  9. 五线四相步进电机C语言程序,stm32四相五线步进电机驱动程序
  10. 【JAVA学习】六、设计模式
  11. SylixOS -- 网卡驱动浅析
  12. 70年代时尚偶像Bianca Jagger
  13. MATLAB实战——方差分析
  14. KiCad V6使用记录
  15. 从你的全世界路过❤️——架构师frist blood
  16. Python 一个快速视频剪辑编辑神器 — Moviepy
  17. 金融业运维体系指南-嘉为蓝鲸
  18. 量化投资学习【常见策略】海龟交易系统
  19. android系统版本市场分布调查报告,安卓网:中国Android系统手机品牌分布情况
  20. “软件新时代,开源创未来”1024 程序员节北京峰会圆满落幕

热门文章

  1. (转)求质数算法的N种境界[1] - 试除法和初级筛法
  2. POS打印机控制命令说明
  3. SRILM的java接口
  4. 阿里java工程师要求_阿里Java P系列技术要求(P5-P7)
  5. 嵌入式分享~IO相关1 ##
  6. Windows逆向安全(一)之基础知识(九)
  7. Ubuntu18.04 安装FoxitReader福昕阅读器
  8. 手机数控模拟器安卓版_数控机床模拟器手机版下载
  9. 渗透测试工具Burpsuite
  10. 机器学习:逻辑回归(logistics regression)