您的位置:首页 > 财经 > 金融 > 怎么做网页挣钱_网站后台开发做什么_网站备案是什么意思_建网站赚钱

怎么做网页挣钱_网站后台开发做什么_网站备案是什么意思_建网站赚钱

2024/12/23 8:22:43 来源:https://blog.csdn.net/m0_74163972/article/details/142425819  浏览:    关键词:怎么做网页挣钱_网站后台开发做什么_网站备案是什么意思_建网站赚钱
怎么做网页挣钱_网站后台开发做什么_网站备案是什么意思_建网站赚钱

在 Qt 中,可以通过在自定义的类中重载 mousePressEvent 和 mouseMoveEvent 函数来捕获鼠标按下和移动事件,以便实现例如拖动窗口等功能。

mousePressEvent 和 mouseMoveEvent分别是鼠标按下事件和鼠标移动事件。这两个函数是QT中本身就存在的函数,我们对这两个函数进行重写实现拖动无边窗窗口的效果。

重写两个函数完成拖动窗口的功能

在这里插入图片描述

代码

#include "MainWidget.h"
#include <QMoveEvent>MainWidget::MainWidget(QWidget *parent): QWidget(parent)
{ui.setupUi(this);this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMaximizeButtonHint);
}MainWidget::~MainWidget()
{}void MainWidget::mousePressEvent(QMouseEvent * event) {window_pos = this->pos();mouse_pos = event->globalPos();diff_pos = mouse_pos - window_pos;}void MainWidget::mouseMoveEvent(QMouseEvent* event) {QPoint pos = event->globalPos();this->move(pos - diff_pos);
}

这段代码实现了一个简单的拖动窗口的功能,通过鼠标按下和移动事件,可以让 MainWidget 这个窗口随鼠标拖动。

1. mousePressEvent(QMouseEvent* event)

这个函数捕获鼠标按下事件,记录当前窗口的位置和鼠标的位置,以及它们之间的差值。

void MainWidget::mousePressEvent(QMouseEvent* event) {// 记录窗口的当前位置window_pos = this->pos();  // 获取窗口的当前坐标// 记录鼠标的全局位置(相对于屏幕)mouse_pos = event->globalPos();  // 获取鼠标相对于屏幕的位置// 计算鼠标位置和窗口位置之间的差值diff_pos = mouse_pos - window_pos;  // 这是当点击窗口时鼠标与窗口左上角之间的差值
}
  • this->pos():获取窗口的当前位置(相对于屏幕的左上角)。
  • event->globalPos():获取鼠标在屏幕上的位置(相对于屏幕的左上角)。
  • diff_pos:计算鼠标位置和窗口左上角之间的差值,用于保持窗口的相对移动。
2. mouseMoveEvent(QMouseEvent* event)

这个函数捕获鼠标移动事件,并通过拖动鼠标移动窗口。

void MainWidget::mouseMoveEvent(QMouseEvent* event) {// 获取鼠标的全局位置(相对于屏幕)QPoint pos = event->globalPos();  // 获取当前鼠标相对于屏幕的位置// 移动窗口,保持鼠标与窗口之间的相对位置不变this->move(pos - diff_pos);  // 将窗口移动到新位置
}
  • event->globalPos():获取鼠标当前位置(相对于屏幕的全局坐标)。
  • this->move(pos - diff_pos):通过新的鼠标位置和之前计算的差值来计算窗口的新位置,并移动窗口。

功能总结:

  • 当鼠标按下时,记录当前窗口位置和鼠标位置,并计算它们之间的相对偏移量 diff_pos
  • 当鼠标移动时,根据鼠标的新位置和偏移量 diff_pos,实时更新窗口的位置,从而实现窗口的拖动。

使用场景:

  • 这个功能常用于无边框窗口 (Qt::FramelessWindowHint),允许用户通过点击并拖动窗口的内容区域来移动整个窗口。

代码解析

在这里插入图片描述

this->pos()表示以整个桌面的左上角为坐标原点,当前窗口左上角的矢量向量,即窗口坐标。
event->globalPos()表示以整个桌面的左上角为坐标原点,当前鼠标的矢量向量,即鼠标坐标。
this->move()表示将窗口左上角设置为怎样的坐标,同样是以整个桌面的左上角为坐标原点。

5号坐标是鼠标移动之后的坐标,我们可以直接通过event->globalPos()获取。
我们需要得到6号坐标,这样我们就可以直接设置鼠标移动之后的窗口位置,即this->move(6号坐标)
6号坐标怎么得到?五号坐标减去4号坐标,4号坐标等价于3号坐标。
坐标的实际含义是向量,带箭头的线段。

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。
同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。
谢谢您的支持,期待与您在下一篇文章中再次相遇!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com