QT制作软件---窗口跟随鼠标进行移动
书接上文,在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制作软件---窗口跟随鼠标进行移动相关推荐
- 如臂使指——Dojo框架下让浮动窗口跟随鼠标而动
介绍 在web应用的很多场合,需要让浮动窗口跟随鼠标而动.比如这儿举的一个例子:当用户选中网页上一段内容时,弹出工具条让用户进行标记.可以想象一下,有一个在线看书的应用,支持读者在阅读的时候随时做笔记 ...
- processing制作熊猫头像跟随鼠标拖尾
先上效果图: 我演示时电脑有点卡所以看着有些顺畅,你的电脑应该是没有问题的. processing实现跟随鼠标拖尾其实不难,在这篇文章中我将介绍图案封装.封装图案整体缩放.数组的创建方法以及一些逻辑处 ...
- [QT]制作软件级屏保
之前接手的项目中有一个关于屏保的需求是,如果超过30s未进行操作,软件自动进入屏保状态.简单分析一下:所谓未进行操作即是指未接收到键盘或者鼠标事件,超过30s也就是需要用到定时器,屏保状态就是显示一张 ...
- 可以查询天气的日历——QT制作第一个自己的小软件
目录 前言 一.ui界面 1.整体效果 2.主界面 3.天气查询 4.编辑日志 二.程序所有的文件 声明软件图标 1.widget.cpp 2.weather.cpp 3.text.cpp 4.mai ...
- python物体跟着鼠标走_用Python写一个跟随鼠标运动的自定义窗口
背景:因为项目需要,要开发一个在PC上运行的应用程序,生成一个跟随鼠标运动的窗口,并且监听鼠标的点击事件,并在窗口上做相应的显示. 平台:Win7 64位 + Python27 64位 支持库:PyH ...
- 使用Qt Designer制作软件的图形界面
介绍 Qt Designer是一款设计和构建图形用户界面的Qt工具,本文介绍如何使用Qt Manager制作软件的图形界面. 安装 使用Qt Manager时,首先在python的环境中安装pyqt, ...
- OpenCV(3):用Vs+Qt制作一个查看图片相似度的窗口程序
OpenCV(2):用Vs+Qt制作一个显示两张图片的窗口程序 在制作了窗口程序后,在网上找了比较两张图片差异度的算法. 哈希值方法:https://blog.csdn.net/fengbingchu ...
- QT制作的软件全屏显示后最小化,点击任务栏图标打开时不是全屏
QT制作的软件全屏显示后最小化,点击任务栏图标打开时不是全屏 前言 用QT做了一个小软件,把它自带的窗口栏给屏蔽了自己搞了关闭和最小化的按钮,且软件打开是全屏显示的.如今遇到的问题是,打开软件全屏显示 ...
- qt制作简易视频截帧软件
qt制作简易视频截帧软件 1.视频进度条滑动参考 https://blog.csdn.net/zong596568821xp/article/details/78991397?spm=1001.201 ...
最新文章
- 一、Focal Loss理论及代码实现
- ssh其他机器的Expect脚本
- 没想到这家老牌AI公司越来越不“纯粹”了
- ACCESS中的Update语句不支持Select的解决办法
- 用Ajax将checkbox选中的值发送给后台
- redis cli 删除key 模糊_不同操作系统下,Redis的使用命令
- linux编译redis打包,linux下下载redis,并且编译
- Windows下安装配置SubVersion的简明步骤
- 日志文件设计学习(一)
- 微软 WPF 框架源码现已托管至 GitHub
- 联想计算机主机编号,联想如何查找主机编号
- numpy序列预处理dna序列_干货 :教你一文掌握数据预处理
- python工资一般多少p-Python里的黄金库,学会了你的工资至少翻一倍
- 数据中心业务中断 多与运营流程有关
- Fortran入门教程(一)——引入篇
- c++ 时间类型详解(time_t和tm)
- 车载Android应用开发入门指南(必看)
- 数据的预处理分箱python_数据预处理——数据分箱
- Git 使用源代码包编译、配置部署和使用 使用包管理工具安装
- 不从SD卡启动树莓派2
热门文章
- 微信小程序 扫码 加载图片
- OSG for Android实现VPB地形,倾斜影像与三维模型加载
- SAP MIGO生产订单入库校验BADI增强MB_MIGO_BADI
- 导出Excel并兼容IE8版本
- dvwa详解_DVWA(六):XSS-Reflected 反射型XSS全等级详解
- 网页中登陆注册是如何实现的
- Zhong__Python lambda()
- 【JavaWeb】前置知识:CSS与JavaScript知识汇总
- 电脑正在锁定计算机是什么意思啊,笔记本正在锁定然后就关机了
- 基于STM32的超声波雷达项目【可拟合构建平面地图】(代码开源)