问题描述:
在窗口拖动的过程中刚开始可以流畅的拖动窗口,但是一小会儿之后出现窗口拖不动的现象,或者按下鼠标在拖动区域内可以流畅拖动,但是按下鼠标朝一个方向拖动后,释放鼠标,按照此操作操作几次后,出现窗口拖不动的情况,但是过一会儿后窗口又可以被拖动。
发生问题的环境介绍:
在窗口中创建了一个场景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为窗口的大小。
只做记录。

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

  1. Qt的日常编程过程中遇见的问题和使用

    Qt的日常编程过程中遇见的问题和注意 Qt的日常编程过程中遇见的问题 1.QString和String的转化的格式问题,中文转化过程中会出现问题. 2.使用qcustomplot的时候出现错误:LIN ...

  2. 如何解决QT视频会议窗口在拉伸过程中整个界面闪烁的问题

    一.问题描述 开发环境:Qt5.15.0.Win10. Visual studio 2019.C++ 在开发视频会议项目的过程中,被一个问题困扰了很久.就是整个视频会议的界面在拉伸四周改变大小的过程中 ...

  3. Qt学习之安装过程中各种问题的解决

    Qt的安装之路真的坎坷,也许是我电脑太难了吧,不过,还是在不断尝试中一个一个解决了全部问题,下面就来看看Qt安装过程中这些问题到底要怎么解决吧. 这里写目录标题 版本选择 问题一--win10系统Qt ...

  4. [项目过程中所遇到的各种问题记录]部署篇——项目部署过程中那些纠结的问题-SQLServer...

    前一篇文章说了些有关IIS的,这篇则是说SQLServer的,相比IIS来说,SQLServer的配置过程中问题就少了许多,而且都比较有针对性,下面开始记录: 注:由于实际项目的开发都是基于SQL20 ...

  5. 记录开发移动端项目过程中的各种问题、插件及教程(不定时更新)

    本文为整理记录本人开发移动端项目的过程中,针对项目中业务需求所碰到的各种坑.用到的各种插件及教程整理?. 以下为教程整理: 1.再聊移动端页面的适配_Layout, 布局, mobile, CSS 教 ...

  6. 解决SeekBar拖动过程中thumb周围产生的圆形阴影/白色圆圈

    最近项目中自定义Seekbar的时候遇到一个问题:拖动进度条的时候,设置的thumb周围会产生一个圆形的阴影/白色圆圈: 用中文在google搜了好久,始终没找到答案(也许是我搜索的关键字有误).转换 ...

  7. Qt登录服务器验证,QT笔记:QT模拟网页交互过程中的token验证机制

    在平时上网时,我们登陆一些网站后,为了校验客户端的身份.保障数据的安全性,服务器会给浏览器发送一个token值,这个token值就是一张令牌,你可以把它看成一张通行证,有了它你才能对该网站进行提交数据 ...

  8. 记录 ESIM 安装、使用过程中遇到的问题

    参考 事件相机(Event-based camera)模拟器ESIM配置及使用指南_zkk9527的博客-CSDN博客,记录一下自己遇到的问题. 1.安装 ROS 我的环境是 UBUNTU 18.04 ...

  9. java 鼠标拖动图形_java怎么实现鼠标在桌面拖动过程中 画 矩形的 功能?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; i ...

最新文章

  1. 张小龙:我是对AI的未来表示担忧的人之一
  2. sphinx 源码阅读之分词,压缩索引,倒排——单词对应的文档ID列表本质和lucene无异 也是外部排序再压缩 解压的时候需要全部扫描doc_ids列表偏移量相加获得最终的文档ID...
  3. Java 7之集合类型 - 二叉排序树、平衡树、红黑树---转
  4. 利用MYSQL的函数实现用户登录功能,进出都是JSON(第一版)
  5. 数据类型转换_强制转换
  6. 烂泥:高负载均衡学习haproxy之安装与配置
  7. PostgreSQL体系结构和基本操作
  8. Recipe terminated with error. vscode latex-workshop新的配置文件
  9. api质量等级_润滑油的API等级分类新
  10. React-Native组件之Text内文字垂直居中方案
  11. 【管理心得之二十一】管得少就是管得好
  12. 使用 Python SimpleHTTPServer 快速共享文件
  13. 简易PROTUES的定时器仿真
  14. linux抓包操作,linux/windows常用抓包分析操作
  15. iocp中GetQueuedCompletionStatus 121 信号灯超时时间已到 (error sem timeout)
  16. gl常用库函数,glu常用库函数 简介
  17. Spark中组件Mllib的学习27之逻辑回归-多元逻辑回归,较大数据集,带预测准确度计算
  18. 使用fastText实现文本分类-java版
  19. 神经网络为什么需要加偏置项(bias)?
  20. matlab注册表版本号,通过注册表发现Windows版本信息

热门文章

  1. 7招,实现安全高效的流水线管理
  2. Serverless在大规模数据处理的实践
  3. 容器环境自建数据库、中间件一键接入阿里云 Prometheus 监控
  4. MongoDB Sharding 请勿复用已删除的 namespace
  5. AnalyticDB for PG 如何作为数据源对接帆软 FineBI
  6. 阿里开发者们的第13个感悟:工程师需要在循环迭代中成长
  7. “蚂蚁漫步”背后的定位原理思考
  8. AR热度不在? NO! 三星开发者大会将聚焦AR
  9. 如何快速学好python语言_如何快速的学习Python语言
  10. 管理系统中计算机应用 重点章节,11年《管理系统中计算机应用》 第5章 重点要点.doc...