书接上文,在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. 一、Focal Loss理论及代码实现
  2. ssh其他机器的Expect脚本
  3. 没想到这家老牌AI公司越来越不“纯粹”了
  4. ACCESS中的Update语句不支持Select的解决办法
  5. 用Ajax将checkbox选中的值发送给后台
  6. redis cli 删除key 模糊_不同操作系统下,Redis的使用命令
  7. linux编译redis打包,linux下下载redis,并且编译
  8. Windows下安装配置SubVersion的简明步骤
  9. 日志文件设计学习(一)
  10. 微软 WPF 框架源码现已托管至 GitHub
  11. 联想计算机主机编号,联想如何查找主机编号
  12. numpy序列预处理dna序列_干货 :教你一文掌握数据预处理
  13. python工资一般多少p-Python里的黄金库,学会了你的工资至少翻一倍
  14. 数据中心业务中断 多与运营流程有关
  15. Fortran入门教程(一)——引入篇
  16. c++ 时间类型详解(time_t和tm)
  17. 车载Android应用开发入门指南(必看)
  18. 数据的预处理分箱python_数据预处理——数据分箱
  19. Git 使用源代码包编译、配置部署和使用 使用包管理工具安装
  20. 不从SD卡启动树莓派2

热门文章

  1. 微信小程序 扫码 加载图片
  2. OSG for Android实现VPB地形,倾斜影像与三维模型加载
  3. SAP MIGO生产订单入库校验BADI增强MB_MIGO_BADI
  4. 导出Excel并兼容IE8版本
  5. dvwa详解_DVWA(六):XSS-Reflected 反射型XSS全等级详解
  6. 网页中登陆注册是如何实现的
  7. Zhong__Python lambda()
  8. 【JavaWeb】前置知识:CSS与JavaScript知识汇总
  9. 电脑正在锁定计算机是什么意思啊,笔记本正在锁定然后就关机了
  10. 基于STM32的超声波雷达项目【可拟合构建平面地图】(代码开源)