Qt5鼠标移动事件 抖动问题
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鼠标移动事件 抖动问题相关推荐
- Python - selenium_WebDriver 鼠标键盘事件
from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_cha ...
- JS 处理鼠标滚轮事件
为什么80%的码农都做不了架构师?>>> /* 鼠标滚轮事件 */ var onMouseScroll = function(e) {/* 向上滚为负数 */var direc ...
- svg鼠标响应事件的四种方法(其中两种可支持火狐)
svg鼠标响应事件的四种方法 鼠标响应事件的四种方法,以click事件为例. Mouse Events - SMIL <?xml version="1.0" encoding ...
- java 模拟鼠标键盘_使用SWT模拟鼠标键盘事件
二.使用SWT中的鼠标键盘事件 在SWT的snippets中有两个例子用来介绍这两个方法的使用,如下: (1).模拟鼠标事件 * UI Automation (for testing tools) s ...
- 在FireFox浏览器上,用stopImmediatePropagation阻止冒泡鼠标滚动事件
楔子 是不是在火狐用stopPropagation不太满意 很久没有笑过又不知为何 既然不快乐又不喜欢这里 不如一路向西用stopImmediatePropagation(其实我对浏览器的兼容性看不顺 ...
- Linux 模拟 鼠标 键盘 事件
/************************************************************************* Linux 模拟 鼠标 键盘 事件* 说明:* 以 ...
- python tk 获取鼠标事件_在Tkin中列出鼠标悬停事件函数
我正在制作一个医学工具的图形用户界面作为一个类项目.给定一个条件,它应该输出一堆从不同网站收集的治疗方案,比如webMD.我希望能够处理所列出的任何一种疗法的鼠标悬停事件,以提供关于该疗法的更多信息( ...
- wxpython实现鼠标拖动事件
wxpython鼠标拖动事件小案例: #coding:UTF-8 import wxapp = wx.App() def dragEVT(event):if event.ButtonDown():pa ...
- java 鼠标单击_不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件
不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件 关注:54 答案:3 信息版本:手机版 电脑版 解决时间 2021-01-13 04:21 提问者少走感情路 2021-01-12 08:3 ...
最新文章
- 视频处理器为电池供电的设计提供4K视频编码
- html表格td宽度设置,table以及td宽度设置细节
- vue-cli脚手架构建项目注意事项(填坑)
- 值得尝试的 3 个 Linux 终端
- 分享到facebook链接原格式_神马?!你还不知道Facebook广告怎么操作?
- 在Visual Studio Code中配置GO开发环境
- android无缝切换播放器,android 视频 无缝切换 无缝播放 surfaceview
- 【算法学习】将MSRCR中的模糊处理由FFT修改为时域纯高斯模糊
- JGit、SvnKit - 版本提交日志(1)提取
- 水下通信方式以及WSN(无线传感器网络
- SQL中的内连接查询和外连接查询
- ANSYS win10家庭版安装经验:
- 仿QQ音乐下载歌曲头部导航
- linux stm32 swd,stm32 JTAG和SWD的使用区别
- ANDROID物联网开发从入门到实战附源码
- C语言实现三子棋(五子棋可以改赢得函数即可)
- webdav ios android,iWork(iOS 版):使用 WebDAV 服务
- 一张图片测试你的好色程度
- 自己动手做个智能小车(1)
- 虚拟机linux下扩充硬盘的方法
热门文章
- 我的世界服务器等级系统,[娱乐][角色][聊天][上古之石]LevelSignPlus——服务器等级声望系统[1.7.2-1.10.2]...
- python数据处理与分析(汇总)
- À¸´£º¹²ÏíÖйúÐÅÏ¢²úÒµ´øÀ´µÄÓ°ÏìÁ¦
- 全了!国内外知名互联网排名
- selenium实现163邮箱自动登录
- 新一代萌主!人见人爱的夏洛特小公主
- 用计算机绘制函数图像ppt,如何利用描点画函数图像课件制作
- Perl之Spreadsheet::WriteExcel
- mt4交易软件云服务器_MT4交易软件的使用教程及快捷键
- 你看这雪花如此的美丽