QT播放窗口随鼠标拖拽实时移动位置+坐标点的获取方式

2023-11-06

QT播放窗口随鼠标拖拽实时移动位置+坐标点的获取方式

QT坐标获取方式

  1. 相对位置:每个Qwidget都能通过pos()获取到相对自己父类窗口的位置,
  2. 绝对位置:pWidget->mapToGlobal(QPoint(0,0)) ;将当前控件的相对位置转换为屏幕绝对位置
  3. 绝对位置转为相对位置: pWidget->mapFromGlobal(QPoint(0,0)), 将绝对位置对应到控件的相对位置。

使用相对坐标获取当前item

QMenu* popMenu = new QMenu(ui->materialListWidget);
    InsertAction = new QAction("添加 ", ui->materialListWidget);
    DeleteAction = new QAction("删除 ", ui->materialListWidget);
    popMenu->addAction(InsertAction);
    popMenu->addAction(DeleteAction);
    if(ui->materialListWidget->currentItem()!=NULL)
    {
        EditAction = new QAction("编辑 ", ui->materialListWidget);
        popMenu->addAction(EditAction);
    }
//    if(ui->materialListWidget->itemAt(mapFromGlobal(QCursor::pos())) != NULL) //如果有item则添加"编辑"菜单 [1]*
//    {
//        EditAction = new QAction("编辑 ", ui->materialListWidget);
//        popMenu->addAction(EditAction);
//    }

当有currentItem时,增加编辑项,实际使用mapFromGlobal发现有时编辑菜单项不会显示。

视频窗口的拖拽移动

窗口相对坐标示意

在这里插入图片描述
播放窗口在移动的时候鼠标相对于它的相对坐标z不会改变,所以鼠标按下事件触发就计算z,移动时获取鼠标相对于屏幕原点的坐标以及窗口相对于屏幕原点的坐标,z=x-y;

代码使用

创建一个继承自QVideoWidget的QMyVideoWidget类,重写鼠标事件,ui对象提升为自定义QMyVideoWidget类。

//.h文件
virtual void mouseMoveEvent(QMouseEvent *);
virtual void mousePressEvent(QMouseEvent *);
virtual void mouseReleaseEvent(QMouseEvent *);
QPoint z;  //记录鼠标相对于屏幕原点的位置
//.cpp文件
void MyVideoWidget::mouseMoveEvent(QMouseEvent *event)
{
    QWidget::mouseMoveEvent(event);

    QPoint y = event->globalPos(); // 鼠标相对于桌面左上角位置
    QPoint x = y - this->z;

    this->move(x);

}
void MyVideoWidget::mousePressEvent(QMouseEvent *event)
{
    QWidget::mousePressEvent(event);

    QPoint x = this->geometry().topLeft(); // 窗口左上角相对于桌面左上角位置
    QPoint y = event->globalPos(); // 鼠标相对于桌面左上角位置
    this->z = y - x; 
}
void MyVideoWidget::mouseReleaseEvent(QMouseEvent *event)
{
    QWidget::mouseReleaseEvent(event);

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

QT播放窗口随鼠标拖拽实时移动位置+坐标点的获取方式 的相关文章

随机推荐

  • 如何判断dpr的倍数

    1 js中有window devicePixelRatio可直接查看倍率 2 用css技术判断dpr的倍数 响应式设计 媒介查询 通过设置断点来实现响应 max device pixel ratio 最大设备dpr max resoluti
  • react的ref三种使用方式,获取元素内容

    react的ref三种使用方式 获取元素内容 注意 应尽可能少的使用ref 优先使用state 1 字符串 refGetData1 gt alert 获取到的内容 this refs div1 innerText div 点我是ref字符串
  • 运放的虚短与虚断

    虚断 理想情况下 运放的同向反向输入端等效电阻无穷大 而实际情况下 输入电阻Ri也达到兆欧 M 级别 例如OP07 7 31M 因此 输入端电流很小 微安级别 uA 可以将同相输入端与反相输入端的电流近似为0 输入阻抗无穷大 电流近似为零
  • QT 使用qcustomplot 图库 总结

    qcutomplot是一个写好的图标库 下面讲几点注意事项 使用步骤一 导入qcustomplot h cpp文件后 要在 pro 文件中加入 QT printsupport 使用步骤二 添加一个widget 打开ui 在widget右键点
  • java 延迟执行代码(定时作用)

    延时执行 间隔某段时间之后 再去执行某段代码 实现这种结果有两种方式 1 使用Sleep方法 就是去新建一个线程 然后里边放一个Thread sleep 方法 这也是比较通俗的做法 new Thread public void run tr
  • 手把手教你配置CUDA, cuDNN-十分钟配置本地CUDA, cuDNN

    前文书说到 类似tensorflow和pytorch这种框架有一个很大的优点就是提供了对GPU的支持 那么 如果我们的电脑上正好有一块十分强劲的显卡 就请跟着下面的教程配置本地的CUDA cuDNN环境 这样就可以让我们使用GPU版本的te
  • NFS高可用方案:NFS+keepalived+Sersync

    1 背景 因为某系统需要部署生产 但是云平台的nas存储资源不足需要重新采购 采购周期较长 需要有一个临时的解决方案 这样时候就需要采用nfs服务来提供网络存储服务了 在部署nfs服务的时候需要考虑生产环境需要有一定的高可用性 经过考虑之后
  • el-date-picker组件设定指定时间起一个月的限制(PS:日常笔记)

  • eclipse运行项目时用内置浏览器能打开项目,但是在外置浏览器输入地址无法访问

    解决方案 window gt perferences gt General gt Web Browser gt use external web browser
  • 【管理篇 / 配置】❀ 02. 常用设置 ❀ FortiGate 防火墙

    简介 这个实验提供FortiGate飞塔防火墙命令及图形管理入门 此外 这个实验将指导你怎样正确的备份和恢复一个配置文件 建立一个新的管理员帐号和改变管理员访问权限 工作在命令行界面 你可以使用命令行界面 CLI 访问一台FortiGate
  • 评分卡建模工具scorecardpy全解读

    说到评分卡建模工具 做过评分卡的应该都能想到谢博士的scorecardpy和专为工业界模型开发设计的Python工具包 Toad 两者相比 scorecardpy更加轻量级 且依赖较少 可以满足大多数场景下的评分卡构建 为了使评分卡建模流程
  • MarkDown编辑器字体颜色设置

    文章目录 一 颜色 二 大小 三 字体 四 背景色 五 文章转载 CSDN的markdown编辑器是其衍生版本 扩展了Markdown的功能 如表格 脚注 内嵌HTML等等 就是内嵌HTML 接下来要讲的功能就需要使用内嵌HTML的方法来实
  • 2019你会被裁员吗?

    2018年 我的经历 整个互联网行业都在裁员1 3 我也是亲历者 我想弄清楚为什么 所谓的行业凛冬 具体是什么 是真的来了 或是老板们在忽悠我们 找到原因 我希望反思 2019年可以不会被裁员 现在 我有了答案 和你分享 烧脑准备哈 开始
  • centos7 磁盘刷新容量

    1 添加一块新的硬盘sdb 40G lsblk mkdir test mkfs ext4 dev sdb blkid grep sdb echo blkid grep sdb gt gt etc fstab vim etc fstab UU
  • Qt 样式表、绘图事件设置渐变色

    先放效果图 这里的窗体颜色 字体 pushbutton背景都是渐变色 渐变色的颜色可以在 链接 获取 对应网址 https webgradients com 现在来说具体操作步骤 关于这个窗体的背景颜色 这里是直接重写了绘图事件 注意这里的
  • Spring、Springboot入门之事务处理

    1 什么是事物 通俗讲事物就是一组原子操作单元 组内的操作要么全部执行成功 要么全部失败 事务有四个特性 ACID 1 原子性 Atomicity 事务是一个原子操作 由一系列动作组成 事务的原子性确保动作要么全部完成 要么完全不起作用 2
  • echarts中横坐标显示为time,使用手册

    需求 后端传递 两段数据 不同时间间隔 的24h实时数据 前端需要根据24小时时间展示 要求 x轴为0 24h 每个两小时一个刻度 误区 刚开始通过二维数据的形式秒点 data x y x y 因为是两组数据的横纵坐标不一样 所有没法固定x
  • Microsoft Dynamics CRM 2013升级2015(二)正式安装升级 2015及 Reporting Extensions安装

    Microsoft Dynamics CRM 2015 系统要求和所需技术 Microsoft Dynamics CRM 本地 版本需要以下软件 Microsoft Windows Server Microsoft Windows Serv
  • 多路复用IO与NIO

    最近在学习NIO相关知识 发现需要掌握的知识点非常多 当做笔记记录就下 在学NIO之前得先去了解IO模型 1 同步阻塞IO Blocking IO 即传统的IO模型 2 同步非阻塞IO Non blocking IO 默认创建的socket
  • QT播放窗口随鼠标拖拽实时移动位置+坐标点的获取方式

    QT播放窗口随鼠标拖拽实时移动位置 坐标点的获取方式 QT坐标获取方式 使用相对坐标获取当前item 视频窗口的拖拽移动 窗口相对坐标示意 代码使用 QT坐标获取方式 相对位置 每个Qwidget都能通过pos 获取到相对自己父类窗口的位置