书接上文,在QT制作软件—去除系统自带的Dialog边框这篇博客中,我们提到了,如果移除系统自带的Dialog窗口会出现当前创建的窗口,无法拖动的情况。即如下图所示:

图1

解决方法:(原理)

  • 要拖动窗口,首先需要鼠标选中,然后进行拖动。
  • 窗口左上角是有一个位置坐标的,记为a,鼠标点击的位置也是有坐标的,通过globalPos()函数可以得出,我们记录下鼠标第一次点击的坐标,可以求出两者的差值m_pt。
  • 在移动的过程中虽然鼠标的位置每次都会移动,但是只要保证差值m_pt不变,我们就可以计算出,窗口左上角应该往哪个位置去移动。

解决方法:(代码)

  • 在.h文件中加入两个自定义的函数,和一个用于存储差值的私有成员m_pt
protected:void mouseMoveEvent(QMouseEvent *event);  //鼠标移动void mousePressEvent(QMouseEvent *ev);    //鼠标单击
private:QPoint m_pt;         //m_pt=差值=鼠标当前位置-窗口左上角点

图2
  • 函数实现代码如下所示:(注意: 这里在.c文件要引入#include < QMouseEvent > 头文件)
void login::mouseMoveEvent(QMouseEvent *event)
{//只允许左键拖动   持续的动作if(event->buttons()&Qt::LeftButton)  //buttons处理的是长事件,button处理的是短暂的事件{//窗口跟随鼠标移动//窗口的新位置=鼠标当前位置-差值move(event->globalPos()-m_pt);}
}void login::mousePressEvent(QMouseEvent *ev)
{// 如果鼠标左键按下  单击if(ev->button()&Qt::LeftButton){//求差值=鼠标当前位置-窗口左上角点m_pt=ev->globalPos()-this->geometry().topLeft();  //geometry()是矩形窗口,topLeft()是左上角的信息。}
}

图3
  • 到此,我们在重新编译运行,就会发现窗口可以随意拖动了。
图4

最后,觉得本文内容对你有所帮助的话,希望能点赞收藏,你的鼓励是对我最大的支持!

QT制作软件---窗口跟随鼠标进行移动相关推荐

  1. 如臂使指——Dojo框架下让浮动窗口跟随鼠标而动

    介绍 在web应用的很多场合,需要让浮动窗口跟随鼠标而动.比如这儿举的一个例子:当用户选中网页上一段内容时,弹出工具条让用户进行标记.可以想象一下,有一个在线看书的应用,支持读者在阅读的时候随时做笔记 ...

  2. processing制作熊猫头像跟随鼠标拖尾

    先上效果图: 我演示时电脑有点卡所以看着有些顺畅,你的电脑应该是没有问题的. processing实现跟随鼠标拖尾其实不难,在这篇文章中我将介绍图案封装.封装图案整体缩放.数组的创建方法以及一些逻辑处 ...

  3. [QT]制作软件级屏保

    之前接手的项目中有一个关于屏保的需求是,如果超过30s未进行操作,软件自动进入屏保状态.简单分析一下:所谓未进行操作即是指未接收到键盘或者鼠标事件,超过30s也就是需要用到定时器,屏保状态就是显示一张 ...

  4. 可以查询天气的日历——QT制作第一个自己的小软件

    目录 前言 一.ui界面 1.整体效果 2.主界面 3.天气查询 4.编辑日志 二.程序所有的文件 声明软件图标 1.widget.cpp 2.weather.cpp 3.text.cpp 4.mai ...

  5. python物体跟着鼠标走_用Python写一个跟随鼠标运动的自定义窗口

    背景:因为项目需要,要开发一个在PC上运行的应用程序,生成一个跟随鼠标运动的窗口,并且监听鼠标的点击事件,并在窗口上做相应的显示. 平台:Win7 64位 + Python27 64位 支持库:PyH ...

  6. 使用Qt Designer制作软件的图形界面

    介绍 Qt Designer是一款设计和构建图形用户界面的Qt工具,本文介绍如何使用Qt Manager制作软件的图形界面. 安装 使用Qt Manager时,首先在python的环境中安装pyqt, ...

  7. OpenCV(3):用Vs+Qt制作一个查看图片相似度的窗口程序

    OpenCV(2):用Vs+Qt制作一个显示两张图片的窗口程序 在制作了窗口程序后,在网上找了比较两张图片差异度的算法. 哈希值方法:https://blog.csdn.net/fengbingchu ...

  8. QT制作的软件全屏显示后最小化,点击任务栏图标打开时不是全屏

    QT制作的软件全屏显示后最小化,点击任务栏图标打开时不是全屏 前言 用QT做了一个小软件,把它自带的窗口栏给屏蔽了自己搞了关闭和最小化的按钮,且软件打开是全屏显示的.如今遇到的问题是,打开软件全屏显示 ...

  9. qt制作简易视频截帧软件

    qt制作简易视频截帧软件 1.视频进度条滑动参考 https://blog.csdn.net/zong596568821xp/article/details/78991397?spm=1001.201 ...

最新文章

  1. Framework 4.0 新关键字dynamic 之我见(二)
  2. FPGA 的I/O BANK介绍
  3. 【生生被气死的一周】头秃
  4. 普中51控制火焰传感器_热电偶在煤气灶天然气保护控制中的应用原理
  5. VTK:图片之Colored2DImageFusion
  6. java mysql 事物_java基础之MySQL事务和视图
  7. 14年macmini装双硬盘_19年性价比超高的5款笔记本电脑推荐
  8. 【洛谷1527】 [国家集训队]矩阵乘法(整体二分)
  9. ftp客户端flashfxp破解教程
  10. 中专计算机应用专业简历模板,2016计算机应用专业个人简历模板
  11. IntelliJ IDEA插件开发教程
  12. c语言中整形的最大最小值,c语言整数和浮点数的最大最小值
  13. 职业倾向测试脸型软件,气质类型测试适合职业
  14. 项目管理面试经验之谈
  15. 在线html5行情,Html5版本的全套股票行情图 html54stock
  16. ACM中关于Output Limit Exceeded和Time Limit Exceeded
  17. 编程 100个训练题目
  18. 简易的Java版 eval()函数
  19. 计算机教师个人业绩成果自述,申报中学信息技术高级教师职称晋升个人业绩成果自述.docx...
  20. mysql 人员查询总结

热门文章

  1. 图解pandas的数据合并merge
  2. SAP ABAP(增强技术) BADI自己的一些了解,以及用法
  3. 华中农业大学教务系统自动评教脚本
  4. openlayes调用arcgis wms服务跨域问题(arcgis server10.2)
  5. 利用pygame模块设计一个植物大战僵尸游戏初版设定
  6. 毕业以后读书报告(不定时更新)
  7. 计算机发展历史及其前景展望,论计算机发展史及展望
  8. android开机背景设置,设置开机动态壁纸
  9. ArcGis之椭球面积计算工具
  10. 达内学java要多久_自学Java需要学多久才能达到工作的程度