记录qt窗口在拖动过程中出现的问题

问题描述:
在窗口拖动的过程中刚开始可以流畅的拖动窗口,但是一小会儿之后出现窗口拖不动的现象,或者按下鼠标在拖动区域内可以流畅拖动,但是按下鼠标朝一个方向拖动后,释放鼠标,按照此操作操作几次后,出现窗口拖不动的情况,但是过一会儿后窗口又可以被拖动。
发生问题的环境介绍:
在窗口中创建了一个场景qgraphicsScene,此场景为自定义场景,在自定义场景的构造函数中创建一个图形项,设置此图形项的属性:画笔的粗细,颜色等。在自定义场景中重写鼠标的按下,移动,释放事件。通过鼠标事件的响应可以实现场景中图形项的移动。
解决的方法:
通过输出信息判断图形项的rect其虽然在窗口中移动,但是其位置坐标变为了负值,此时便会出现拖不动的情况,另外,鼠标按下的点的坐标出现负值时也会出现上述拖不动的现象。故位置坐标有问题,由于是在一个窗口中拖动坐标,位置又出现负值,因此添加拖动过程中对边界的限制以及对鼠标按下的点的位置设置。
其添加的设置代码如下:

        if(ptTopLeft.x() < 0){ptTopLeft.setX(0);}if(ptTopLeft.y() < 0){ptTopLeft.setY(0);}if(ptTopLeft.x() > SMALL_W - m_rectSaved.width()){ptTopLeft.setX(SMALL_W - m_rectSaved.width());}if(ptTopLeft.y() > SMALL_H - m_rectSaved.height()){ptTopLeft.setY(SMALL_H - m_rectSaved.height());}

ptTopLeft是被拖动的图形项的左上角坐标,对其位置做出限制,避免了其值为负,场景移动的过程中越过其所在窗口边界。
对于鼠标按下的点的设置和上面基本差不多。

        if(mouseEvent->scenePos().x() < 0){mouseEvent->scenePos().setX(0);}if(mouseEvent->scenePos().y() < 0){mouseEvent->scenePos().setY(0);}if(mouseEvent->scenePos().x() > SMALL_W){mouseEvent->scenePos().setX(SMALL_W);}if(mouseEvent->scenePos().y() > SMALL_H){mouseEvent->scenePos().setY(SMALL_H);}

scenePos()获取的是按下点的场景坐标,当然在拖动过程中图形项和按下的点的坐标类型都为场景坐标,其中宏SMALL_H及SMALL_W为窗口的大小。
只做记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业实战(Jenkins+GitLab+SonarQube)_02_Jenkins运行

Jenkins怎样运行&#xff1f; 文章目录一、Jenkins怎样在Windows运行&#xff1f;1. 找到下载的本地jenkins.war的目录&#xff0c;cmd进入命令行&#xff0c;执行&#xff1a;2. jenkins启动成功后&#xff0c;浏览器访问&#xff1a;localhost:8080二、Jenkins怎样在Linux运行…

Windows OpenGL ES 图像褐色

目录 一.OpenGL ES 图像褐色 1.原始图片2.效果演示 二.OpenGL ES 图像褐色源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…

要闻君说:国内首个5G电话由中国移动在京被打通!360公司转让奇安信股权;腾讯宣布开源三大开发工具 ,紧追技术共享步伐;...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go OPPO技术开放日第三期&#…

qt编译器5.12.3怎么一次性删除所有的断点

自己尝试出来的一个可以一次性删除所有断点的方法&#xff0c;可能还有其它方法&#xff0c;知者望以告知。 方法&#xff1a; 在debug模式下&#xff0c;进行调试运行&#xff0c;此时会出现调试的箭头&#xff0c;方框之类的一栏&#xff0c;如下图&#xff0c;在横向紧挨着的…

Linux操作系统需要做的准备

Linux操作系统需要做的准备 1. 确定IP地址2. 确认登录用户名密码3. 查看/启动ssh服务4. 确认可以远程连接5. 确认防火墙处于关闭状态 1. 确定IP地址 ifconfig2. 确认登录用户名密码 账号&#xff1a;root 秘钥&#xff1a;1234563. 查看/启动ssh服务 检查ssh服务是否启动 …

Windows OpenGL 图像褐色

目录 一.OpenGL 图像褐色 1.原始图片2.效果演示 二.OpenGL 图像褐色源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL ES 学习…

Qt线程写日志

之前没有考虑写日志时采用单独的线程&#xff0c;而是将写日志的部分放在了主线程中实现&#xff0c;后面发现当程序输出的日志信息过多&#xff0c;程序长时间运行后会造成主线程的运行性能降低。故尝试创建一个单独的线程用来写日志。 此程序有一个弊端&#xff0c;运行时没有…

京解之才——2019年技术盘点微服务篇(三)| 程序员硬核评测

戳蓝字“CSDN云计算”关注我们哦&#xff01;程序员硬核测评&#xff1a;客观、高效、不说软话。无论是技术质量、性能水平&#xff0c;还是工具筛选&#xff0c;一测便知&#xff01;过去几年来&#xff0c;“微服务架构”方兴未艾&#xff0c;尽管这种架构风格没有确切的定义…

Linux环境安装并配置Maven

一、Linux环境安装并配置Maven 1. 进入官网下载Tomat安装包2. 解压安装Tomcat3. 配置可执行权限4. 配置可执行端口&#xff08;避免端口冲突&#xff09;5. 验证Tomcat是否可以正常启动和停止 1. 进入Maven官网复制下载地址下载maven maven官网&#xff1a;http://maven.apach…

OpenGL 色阶

目录 一.OpenGL 色阶 1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 色阶 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 …

Qt中全局变量的使用

一般在项目中想要定义一个变量可以被多个类进行访问&#xff0c;此时就可以定义全局变量。习惯上会将项目中所有类都用到的变量&#xff0c;集中定义在一个头文件中&#xff0c;使用时只需包含此头文件。但是对于我这样基础不牢靠的人&#xff0c;就犯了一个错误&#xff0c;而…

强推!2019年最火的容器、K8S和DevOps入门都在这了

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a; Pasca来源&#xff1a;蛋蛋团&#xff08;ID&#xff1a;dandan_tua…

Tomcat10 下载和配置 Linux 环境

文章目录1. 下载Tomat2. 复制链接地址3. 下载4. 解压Tomcat5. 赋予权限6. 启动tomcat7. 监控日志8. linux防火墙9. 浏览器验证1. 下载Tomat tomcat官网&#xff1a;https://tomcat.apache.org/download-10.cgi 2. 复制链接地址 3. 下载 wget https://downloads.apache.org/t…

qt求一个区间的随机数

举例说明&#xff1a; 求65-90之间的随机数 qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); quint8 ch (quint8)qrand()%25 65;先种随机数种子&#xff0c;然后求随机数。65到90之间相差25&#xff0c;先求0-25的随机数&#xff0c;然后在此基础上加65&#xff0c;其范…

Elastic全球用户大会Elastic{ON}首次落地北京

2019年4月10日&#xff0c;全球领先的大数据搜索软件公司Elastic&#xff08;Elasticsearch和Elastic Stack的开发公司&#xff09;一年一度的全球用户大会Elastic首次来到中国&#xff0c;在北京盛大开幕。来自全国的开发人员、合作伙伴和IT行业人士齐聚一堂&#xff0c;了解和…

Jenikns新建节点、配置节点、新建任务、配置任务、脚本验证

Jenkins节点概念&#xff1a; 1、Jenkins的节点就相当于一个服务器的环境配置容器 2、Jenkins的节点可以是多个的&#xff0c;一个UATEnv节点相当于一个UAT环境配置容器 3、Jenkins的节点就相当于把一个服务器的环境配置信息&#xff0c;都配置到了节点中&#xff0c;运行节点就…

Windows OpenGL ES 图像色阶

目录 一.OpenGL ES 图像色阶 1.原始图片2.效果演示 二.OpenGL ES 图像色阶源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…

qt使用动画提示正在载中

当程序加载较慢的时候&#xff0c;为了告知用户正在加载&#xff0c;需要在界面上显示正在加载中的提示。下面简单说一下自己使用中出现的问题。 一、在主线程中使用动画加载 创建基于qapplication的项目&#xff0c;以qdialog类为基类&#xff0c;有.ui文件。 项目的结构如下…

云存储精华问答 | 云存储的优势在哪?

云存储是一种网上在线存储&#xff08;英语&#xff1a;Cloud storage&#xff09;的模式&#xff0c;即把数据存放在通常由第三方托管的多台虚拟服务器&#xff0c;而非专属的服务器上。今天就让我们来看看关于云陈存储的精华问答吧。1Q&#xff1a;云存储是如何分类的&#x…

Github上Fork部署应用程序

Github上Fork部署应用程序 1. Fork简述及作用2. 登录Github&#xff0c;搜索项目3. Github上打开fork的部署应用4. 点击Fork&#xff0c;并确认邮件5. 登录自己的github&#xff0c;查看fork的项目 1. Fork简述及作用 Fork作用&#xff1a;获得代码修改的权限 简述&#xff1a…