#include SignalWin::SignalWin(QWidget *parent) : QWidget(parent), m_bPressed(false), m_bSizeChanging(false){ ui.setupUi(this);}SignalWin::~Signa..._前台鼠标拉伸">搜索查看编辑修改首页UNITYNODEJSPYTHONAIGITPHPGOCEF3JAVAHTMLCSS搜索Gausst松鼠会 这个屌丝很懒,什么也没留下! 关注作者热门标签jqueryHTMLCSSPHPASPPYTHONGOAICC++C#PHOTOSHOPUNITYiOSandroidvuexml爬虫SEOLINUXWINDOWSJAVAMFCCEF3CADNODEJSGITPyppeteerarticle热门文章1Python中的条件语句if-elif-if用法_python if elif elif2一文教你如何处理高并发32024美赛数学建模C题思路&源码4【云原生】Docker基于Dockerfile多级构建,实现缩小镜像体积5Python爬虫【二】爬取PC网页版“微博辟谣”账号内容(selenium同步单线程)_爬虫跳过 微博登录页面6若依RuoYi框架数据库权限控制表解析_ruoyi用户表是哪个7操作系统基础篇_段页式管理中,怎样访问内存,取得某一条数据或指令8Anaconda3\Scripts\activate.bat 不是内部或外部命令,也不是可运行的程序的问题处理方法_c:\users\huawei\anaconda3\scripts\activate.bat' 不是9TypeScript学习笔记1-TS环境搭建10okhttp3使用详解_okhttp3 使用当前位置: article > 正文 无边框窗口鼠标拉伸_前台鼠标拉伸 作者:Gausst松鼠会 | 2024-02-16 15:59:57 赞踩前台鼠标拉伸 窗口区域划分 #include "SignalWin.h"#include "Mycanvas.h"#include <QDebug>#include <QMouseEvent>SignalWin::SignalWin(QWidget *parent) : QWidget(parent), m_bPressed(false), m_bSizeChanging(false){ ui.setupUi(this); } SignalWin::~SignalWin(){ } void SignalWin::setCurWinInfo(SignalWinInfo info){ m_info = info; setMouseTracking(true); //开启鼠标位置追踪 ui.WinFrame->setMouseTracking(true); //开启鼠标位置追踪 ui.SignalWinFrame->setMouseTracking(true);} void SignalWin::mousePressEvent(QMouseEvent *event){ m_startPos = event->pos(); m_startWPos = pos(); pLast = event->globalPos(); m_bPressed = true; m_wid = geometry(); raise();}int poss = 0;void SignalWin::mouseMoveEvent(QMouseEvent *event){ if (this->isMaximized()) return; if (!m_bSizeChanging) { poss = countFlag(event->pos(), countRow(event->pos()));//计算出来鼠标在哪个区域 if (!event->buttons()) setCursorType(poss);//设置鼠标形状 } if ((event->buttons() == Qt::LeftButton) && m_bPressed) { m_bSizeChanging = true; QPoint ptemp; QPoint Framepos = event->globalPos(); ptemp = m_startWPos + Framepos - pLast; //鼠标移动的偏移量 if (poss == 22) //区域(2,2)表示移动窗口 { move(ptemp); } else { QRect wid = geometry(); int minWidth = this->minimumWidth(); int minHeight = this->minimumHeight(); switch (poss)//改变窗口的大小 { case 11: { QPoint pos = m_wid.topLeft(); pos.rx() = pos.rx() + Framepos.x() - pLast.x(); pos.ry() = pos.ry() + Framepos.y() - pLast.y(); wid.setTopLeft(pos); break;//左上角 } case 12: { int topY = m_wid.top(); topY = topY + Framepos.y() - pLast.y(); wid.setTop(topY); break;//中上角 } case 13: { QPoint pos = m_wid.topRight(); pos.rx() = pos.rx() + Framepos.x() - pLast.x(); pos.ry() = pos.ry() + Framepos.y() - pLast.y(); wid.setTopRight(pos); break;//右上角 } case 21: { int leftX= m_wid.left(); leftX = leftX + Framepos.x() - pLast.x(); wid.setLeft(leftX); break;//中左角 } case 23: { int rightX = m_wid.right(); rightX = rightX + Framepos.x() - pLast.x(); wid.setRight(rightX); break;//中右角 } case 31: { QPoint pos = m_wid.bottomLeft(); pos.rx() = pos.rx() + Framepos.x() - pLast.x(); pos.ry() = pos.ry() + Framepos.y() - pLast.y(); wid.setBottomLeft(pos); break;//左下角 } case 32: { int bottomY = m_wid.bottom(); bottomY = bottomY + Framepos.y() - pLast.y(); wid.setBottom(bottomY); break;//中下角 } case 33: { QPoint pos = m_wid.bottomRight(); pos.rx() = pos.rx() + Framepos.x() - pLast.x(); pos.ry() = pos.ry() + Framepos.y() - pLast.y(); wid.setBottomRight(pos); break;//左下角 } } setGeometry(wid); //设置窗口的位置 } } } void SignalWin::mouseReleaseEvent(QMouseEvent *event){ m_bPressed = false; m_bSizeChanging = false; } int SignalWin::countFlag(QPoint p, int row)//计算鼠标在哪一列和哪一行{ if (p.y() < MARGIN) return 10 + row; else if (p.y() > this->height() - MARGIN) return 30 + row; else return 20 + row;}void SignalWin::setCursorType(int flag)//根据鼠标所在位置改变鼠标指针形状{ Qt::CursorShape cursor; switch (flag) { case 11: case 33: cursor = Qt::SizeFDiagCursor; break; case 13: case 31: cursor = Qt::SizeBDiagCursor; break; case 21: case 23: cursor = Qt::SizeHorCursor; break; case 12: case 32: cursor = Qt::SizeVerCursor; break; case 22: cursor = Qt::ArrowCursor; break; default: QApplication::restoreOverrideCursor();//恢复鼠标指针性状 break; } setCursor(cursor);} int SignalWin::countRow(QPoint p){ int row = 0; if (p.x() < MARGIN) return row + 1; else if (p.x() > this->width() - MARGIN) return row + 3; else return 2 + row;} 本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/94968推荐阅读articleUnity脚本调试方法_unity 如何只调试运行一个脚本...在VS中设置断点点击附加到Unity运行Unity即可_unity 如何只调试运行一个脚本unity 如何只调试运行一个... 赞踩articleQt实战案例(42)——利用Qt实现自定义标题栏功能(自定义最大化、最小化、关闭等功能)_ui->b...一、项目介绍(为什么要自自定义标题栏功能)无论是使用qtdesigner,还是直接在程序中创建一个Qwidget,qt程... 赞踩article深度学习基础笔记——卷积神经网络概念及其计算方式_卷积神经网络公式...卷积神经网络(Convolutional Neural Network,CNN)卷积 卷积核 神经网络公式 卷积运算方式... 赞踩articleCesium中实现体渲染_cesium 体渲染...本次目的是在Cesium中复现threejs的两个体渲染示例_cesium 体渲染cesium 体渲染 ... 赞踩articleunity调试-vs2015调试c#代码以及api提示_unty3d c#api 开发中文提示包...-工具版本:Unity 5.4.0f3, vs2015,VSTU2.3 - 此方式适合unity5.2+版本,之前的版本... 赞踩articleKeras.layers各种层介绍_keras.layers.convolutional...Keras.layers各种层介绍原文链接:https://www.cnblogs.com/peng8098/p/ker... 赞踩articlecuda_8.0.61_win10.exe cuda_9.0.176_win10 cudnn-8.0...cuda_8.0.61_win10.exe链接:https://pan.baidu.com/s/1I616zfWy5KO... 赞踩articleJava实现邮件的发送(E-mail)_java 发送邮件...电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等。但这... 赞踩articleQt Graphics-View 图元显示系统_qgraphicsview判断图元是否首尾相接...Qt Graphics-View 图元显示系统踩坑集合QGraphicsView 鼠标移动响应必须设置auto view... 赞踩articleJS遍历数组的十五种方法...这个遍历器生成函数大致的模样可以用ES5 语法模拟出来:这个函数返回一个next() 方法,每调用next() 方法,都... 赞踩articleQt无边框窗口添加阴影_qt 设置qt::framelesswindowhint | qt::win...无边框窗口添加阴影需要两个窗口,第一个顶层窗口用于显示控件的,第二个是底层窗口用于承载顶层窗口并显示边框阴影。也就是说把... 赞踩articleunity协程 Start/StopCoroutine() 结束协程和再次启动协程存在的问题和解决方...一、协程方法需要单独存一份private IEnumerator myTest,再开始和结束不直接传入方法名,而是使用这... 赞踩article先马后看!详解线性回归、朴素贝叶斯、随机森林在R和Python中的实现应用!(附代码)......来源|analyticsvidhya编译| 火火酱,责编| Carol出品|AI科技大本营(ID:rgznai100)谷... 赞踩articlec语言 openvc 图片字符画,python Opencv将图片转为字符画...做了个Python的小练习,网上有人是利用PIL中的Image来实现的,觉得Opencv库挺方便的,于是利用Opencv... 赞踩article写给Krpano小白们的最最最入门级教程(二)_krpano生成模型的基本参数在哪边改...给Krpano小白们的最最最入门级教程(二)_krpano生成模型的基本参数在哪边改krpano生成模型的基本参数在哪边... 赞踩article相关函数在数字信号处理中的应用_数字信号处理 相关函数的作用...根据相关函数的几条基本性质,简要分析了相关函数在数字信号处理当中的一些应用。由分析可知,相关函数方法简洁,在数字信号处理... 赞踩article卷积神经网络 (CNN) 基本原理和公式_cnn公式...卷积神经网络(CNN)基本原理和公式推导卷积神经网络是一种前馈型神经网络, 受生物自然视觉认知机制启发而来的. 现在, ... 赞踩articleUE5分辨率_ue5打包分辨率...ue4的分辨率设置方法_ue5打包分辨率ue5打包分辨率 一、r.setRes 后缀:f 全屏、... 赞踩articleYOLOv8改进有效系列目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制...Hello,各位读者们好,本专栏自开设两个月以来已经更新改进教程60+余篇其中包含C2f、主干、检测头、注意力机制、Ne... 赞踩article人工智能课程设计毕业设计——基于机器学习的手写汉字识别系统_人工智能 手写字识别...在上世纪60年代,美国IBM公司开始进行了对印刷体汉字的模式识别研究工作;1996年Casey和Nag用模板匹配法成功的... 赞踩相关标签unityqtc++ui卷积神经网络深度学习卷积web3d图形渲染javascriptvisual studio调试pythonkerasCUDACUDA8CUDA9百度网盘下载java开发语言eclipse网络信息与通信
赞
踩
#include "SignalWin.h"#include "Mycanvas.h"#include <QDebug>#include <QMouseEvent>SignalWin::SignalWin(QWidget *parent) : QWidget(parent), m_bPressed(false), m_bSizeChanging(false){ ui.setupUi(this); } SignalWin::~SignalWin(){ } void SignalWin::setCurWinInfo(SignalWinInfo info){ m_info = info; setMouseTracking(true); //开启鼠标位置追踪 ui.WinFrame->setMouseTracking(true); //开启鼠标位置追踪 ui.SignalWinFrame->setMouseTracking(true);} void SignalWin::mousePressEvent(QMouseEvent *event){ m_startPos = event->pos(); m_startWPos = pos(); pLast = event->globalPos(); m_bPressed = true; m_wid = geometry(); raise();}int poss = 0;void SignalWin::mouseMoveEvent(QMouseEvent *event){ if (this->isMaximized()) return; if (!m_bSizeChanging) { poss = countFlag(event->pos(), countRow(event->pos()));//计算出来鼠标在哪个区域 if (!event->buttons()) setCursorType(poss);//设置鼠标形状 } if ((event->buttons() == Qt::LeftButton) && m_bPressed) { m_bSizeChanging = true; QPoint ptemp; QPoint Framepos = event->globalPos(); ptemp = m_startWPos + Framepos - pLast; //鼠标移动的偏移量 if (poss == 22) //区域(2,2)表示移动窗口 { move(ptemp); } else { QRect wid = geometry(); int minWidth = this->minimumWidth(); int minHeight = this->minimumHeight(); switch (poss)//改变窗口的大小 { case 11: { QPoint pos = m_wid.topLeft(); pos.rx() = pos.rx() + Framepos.x() - pLast.x(); pos.ry() = pos.ry() + Framepos.y() - pLast.y(); wid.setTopLeft(pos); break;//左上角 } case 12: { int topY = m_wid.top(); topY = topY + Framepos.y() - pLast.y(); wid.setTop(topY); break;//中上角 } case 13: { QPoint pos = m_wid.topRight(); pos.rx() = pos.rx() + Framepos.x() - pLast.x(); pos.ry() = pos.ry() + Framepos.y() - pLast.y(); wid.setTopRight(pos); break;//右上角 } case 21: { int leftX= m_wid.left(); leftX = leftX + Framepos.x() - pLast.x(); wid.setLeft(leftX); break;//中左角 } case 23: { int rightX = m_wid.right(); rightX = rightX + Framepos.x() - pLast.x(); wid.setRight(rightX); break;//中右角 } case 31: { QPoint pos = m_wid.bottomLeft(); pos.rx() = pos.rx() + Framepos.x() - pLast.x(); pos.ry() = pos.ry() + Framepos.y() - pLast.y(); wid.setBottomLeft(pos); break;//左下角 } case 32: { int bottomY = m_wid.bottom(); bottomY = bottomY + Framepos.y() - pLast.y(); wid.setBottom(bottomY); break;//中下角 } case 33: { QPoint pos = m_wid.bottomRight(); pos.rx() = pos.rx() + Framepos.x() - pLast.x(); pos.ry() = pos.ry() + Framepos.y() - pLast.y(); wid.setBottomRight(pos); break;//左下角 } } setGeometry(wid); //设置窗口的位置 } } } void SignalWin::mouseReleaseEvent(QMouseEvent *event){ m_bPressed = false; m_bSizeChanging = false; } int SignalWin::countFlag(QPoint p, int row)//计算鼠标在哪一列和哪一行{ if (p.y() < MARGIN) return 10 + row; else if (p.y() > this->height() - MARGIN) return 30 + row; else return 20 + row;}void SignalWin::setCursorType(int flag)//根据鼠标所在位置改变鼠标指针形状{ Qt::CursorShape cursor; switch (flag) { case 11: case 33: cursor = Qt::SizeFDiagCursor; break; case 13: case 31: cursor = Qt::SizeBDiagCursor; break; case 21: case 23: cursor = Qt::SizeHorCursor; break; case 12: case 32: cursor = Qt::SizeVerCursor; break; case 22: cursor = Qt::ArrowCursor; break; default: QApplication::restoreOverrideCursor();//恢复鼠标指针性状 break; } setCursor(cursor);} int SignalWin::countRow(QPoint p){ int row = 0; if (p.x() < MARGIN) return row + 1; else if (p.x() > this->width() - MARGIN) return row + 3; else return 2 + row;}