Qt5鼠标移动事件 抖动问题

直接使用这种方式,鼠标移动时小部件会产生抖动

void test2::mouseMoveEvent(QMouseEvent *event)
{this->move(event->pos());
}

如果把当前点映射给父级,在移动时不会有抖动,但我并不知道这是什么原理。

void test2::mouseMoveEvent(QMouseEvent *event)
{this->move(mapToParent(event->pos()));
}

如果把事件得到的点拿去移动他的孩子也不会有抖动,但在有多个孩子时,要想单独移动一个就很困难。

void test2::mouseMoveEvent(QMouseEvent *event)
{HelloLabel->move(event->pos());
}

Qt5文档上说使用 globalPos() 可以避免抖动,他获取鼠标在整个屏幕上的坐标。
我的解决方案是:在点击时记录鼠标的点击坐标 globalPos() 和需要移动的小部件的局部坐标 pos() (相对于父级)

void test2::mousePressEvent(QMouseEvent *event)
{if(event->button() == Qt::LeftButton){start_globalPos = event->globalPos(); //点击时鼠标位置start_pos = this->pos(); // 小部件位置}}

在移动时求鼠标的偏移量,然后加上移动前小部件的坐标,最后进行移动 move()

void test2::mouseMoveEvent(QMouseEvent *event)
{QPoint move_globalPos = event->globalPos();    // 移动时坐标QPoint offset_pos = move_globalPos - start_globalPos;  // 偏移量this->move(offset_pos + start_pos);
}

计算偏移量就不会总是让小部件的左上角跟随鼠标移动,而是根据点击的位置移动。

Qt5鼠标移动事件 抖动问题相关推荐

  1. Python - selenium_WebDriver 鼠标键盘事件

    from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_cha ...

  2. JS 处理鼠标滚轮事件

    为什么80%的码农都做不了架构师?>>>    /* 鼠标滚轮事件 */ var onMouseScroll = function(e) {/* 向上滚为负数 */var direc ...

  3. svg鼠标响应事件的四种方法(其中两种可支持火狐)

    svg鼠标响应事件的四种方法 鼠标响应事件的四种方法,以click事件为例. Mouse Events - SMIL <?xml version="1.0" encoding ...

  4. java 模拟鼠标键盘_使用SWT模拟鼠标键盘事件

    二.使用SWT中的鼠标键盘事件 在SWT的snippets中有两个例子用来介绍这两个方法的使用,如下: (1).模拟鼠标事件 * UI Automation (for testing tools) s ...

  5. 在FireFox浏览器上,用stopImmediatePropagation阻止冒泡鼠标滚动事件

    楔子 是不是在火狐用stopPropagation不太满意 很久没有笑过又不知为何 既然不快乐又不喜欢这里 不如一路向西用stopImmediatePropagation(其实我对浏览器的兼容性看不顺 ...

  6. Linux 模拟 鼠标 键盘 事件

    /************************************************************************* Linux 模拟 鼠标 键盘 事件* 说明:* 以 ...

  7. python tk 获取鼠标事件_在Tkin中列出鼠标悬停事件函数

    我正在制作一个医学工具的图形用户界面作为一个类项目.给定一个条件,它应该输出一堆从不同网站收集的治疗方案,比如webMD.我希望能够处理所列出的任何一种疗法的鼠标悬停事件,以提供关于该疗法的更多信息( ...

  8. wxpython实现鼠标拖动事件

    wxpython鼠标拖动事件小案例: #coding:UTF-8 import wxapp = wx.App() def dragEVT(event):if event.ButtonDown():pa ...

  9. java 鼠标单击_不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件

    不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件 关注:54  答案:3  信息版本:手机版 电脑版 解决时间 2021-01-13 04:21 提问者少走感情路 2021-01-12 08:3 ...

最新文章

  1. 视频处理器为电池供电的设计提供4K视频编码
  2. html表格td宽度设置,table以及td宽度设置细节
  3. vue-cli脚手架构建项目注意事项(填坑)
  4. 值得尝试的 3 个 Linux 终端
  5. 分享到facebook链接原格式_神马?!你还不知道Facebook广告怎么操作?
  6. 在Visual Studio Code中配置GO开发环境
  7. android无缝切换播放器,android 视频 无缝切换 无缝播放 surfaceview
  8. 【算法学习】将MSRCR中的模糊处理由FFT修改为时域纯高斯模糊
  9. JGit、SvnKit - 版本提交日志(1)提取
  10. 水下通信方式以及WSN(无线传感器网络
  11. SQL中的内连接查询和外连接查询
  12. ANSYS win10家庭版安装经验:
  13. 仿QQ音乐下载歌曲头部导航
  14. linux stm32 swd,stm32 JTAG和SWD的使用区别
  15. ANDROID物联网开发从入门到实战附源码
  16. C语言实现三子棋(五子棋可以改赢得函数即可)
  17. webdav ios android,iWork(iOS 版):使用 WebDAV 服务
  18. 一张图片测试你的好色程度
  19. 自己动手做个智能小车(1)
  20. 虚拟机linux下扩充硬盘的方法

热门文章

  1. 我的世界服务器等级系统,[娱乐][角色][聊天][上古之石]LevelSignPlus——服务器等级声望系统[1.7.2-1.10.2]...
  2. python数据处理与分析(汇总)
  3. À¸´£º¹²ÏíÖйúÐÅÏ¢²úÒµ´øÀ´µÄÓ°ÏìÁ¦
  4. 全了!国内外知名互联网排名
  5. selenium实现163邮箱自动登录
  6. 新一代萌主!人见人爱的夏洛特小公主
  7. 用计算机绘制函数图像ppt,如何利用描点画函数图像课件制作
  8. Perl之Spreadsheet::WriteExcel
  9. mt4交易软件云服务器_MT4交易软件的使用教程及快捷键
  10. 你看这雪花如此的美丽