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播放窗口随鼠标拖拽实时移动位置+坐标点的获取方式 的相关文章

  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 在哪里可以找到 QT 5.3.0 命令提示符

    用于学习Qt的书 C gui programming with qt 4 2nd 版 我需要Qt的命令提示符 我已经安装了Qt 5 3 0 creator 5 3 0开源 但不知道它的命令提示符在哪里 有人可以帮助我吗 我认为您正在寻找的是
  • 无法将 QList 分配给 QString

    我遇到这个错误 Unable to assign QList
  • 仅在发布模式下使用 glGenBuffer 时出现未处理的异常 - QT

    我在 Windows 7 上使用 Qt 4 8 发布模式编译项目时遇到了一些问题 调试时一切正常 但在发布时我收到未处理的异常 0xC0000005 访问冲突 我将范围缩小到发生这种情况的行 即生成像素缓冲区的时间 我的第一个猜测是 DLL
  • 如何使 Python、QT 和 Webkit 在无头服务器上工作?

    我有 Debian Linux 服务器 我用它来做各种事情 我希望它能够完成一些我需要定期完成的网络抓取工作 这段代码可以是在这里找到 http bit ly QeqvzX import sys from PyQt4 QtGui impor
  • QML:无法读取未定义的属性“xxx”

    ApplicationWindow id root property string rootName rootName visible true width 800 height 400 title qsTr WatchFace Maker
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 如何使用 Qt DOM 通过此语法获取 xml 属性

    我正在使用 Qt DOM XML 解析器 并且遇到了如下属性定义的问题
  • QComboBox 下拉项边距

    我想设计我的风格QComboBox为下拉项目留出边距 现在是这样的 我想要这样的东西 我尝试过 QComboBox QAbstractItemView item margin 3px 但它不起作用 你能帮我解决这个问题吗 您想在项目之间设置
  • 在 QtCreator 中使用 .pro 和 .pri 正确(树)显示 Qt 项目

    是否可以使用项目包含文件 pri 显示不止一个额外级别 例如如果 pro文件包括 pri文件包含两个 pri files pro pri pri pri 在 QtCreator 项目 中显示具有误导性 pro pri pri pri 它根本
  • 清除pyqt中布局中的所有小部件

    有没有办法清除 删除 布局中的所有小部件 self plot layout QtGui QGridLayout self plot layout setGeometry QtCore QRect 200 200 200 200 self r
  • 如何在Qt 5中的paintEvent上使用mouseMoveEvent?

    我是 Qt 和 c 的新手 所以我遇到了一些困难 我正在尝试创建一个小部件 它可以获取 mouseMoveEvent 位置并在鼠标位置的像素图上绘制椭圆 下面你可以看到代码 include myimage h include
  • 使用 OpenGL 渲染 QImage

    与我相关的其他问题 https stackoverflow com questions 20126354 render qimage from sooffscreenrenderer in qglwidget 我认为更核心的问题是 如何渲染
  • 如何doxygen注释Qt属性?

    我想将 Doxygen 注释附加到我的 Q PROPERTY 例如 song h class Song public QObject Q OBJECT private Q PROPERTY QString title READ title
  • 是否有 Qt 小部件可以浏览应用程序中小部件的层次结构(类似于 Spy++)?

    我们有一个具有复杂的小部件层次结构的应用程序 我希望能够以与 Spy 类似的方式浏览此层次结构 查看和编辑属性 例如大小 如果有一个小部件可以显示此信息 则它不需要在外部应用程序中运行 那么问题来了 这样的神兽存在吗 您可以使用Gammar
  • Qt中Q_PROPERTY的意义是什么?

    我无法理解 Q PROPERTY 的用法 Q PROPERTY 如何帮助程序具有防御性 它是干什么用的 我看过这个论坛 但确实无法应用 我已经理解了这个例子 但不明白它的用法 这是一个例子 我能从中得到什么 我知道阅读将赋予只读特权 wri
  • Qt 5.1.1 与 Visual Studio 2012 - 这些 QT 版本无法访问

    打开 Visual Studio 时出现此错误 我安装自http qt project org downloads http qt project org downloads 适用于 Windows 64 位的 Qt 5 1 1 VS 20
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我

随机推荐

  • 如何判断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 获取到相对自己父类窗口的位置