应用场景
-
自定义
QWidget
派生类 -
用鼠标来移动窗体
方法
-
继承
QWidget
类 -
重写
mousePressEvent()
、mouseMoveEvent()
方法 -
使用
QPoint
成员变量来保存鼠标按下时的偏移位置
Example
- MyWidget.h
#include <QWidget>
#include <QMouseEvent>
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr);
protected:
// 重写父类的鼠标事件
void mousePressEvent(QMouseEvent *e) override;
void mouseMoveEvent(QMouseEvent *e) override;
private:
QPoint _offset;
};
- MyWidget.cpp
#include "MyWidget.h"
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
// 设置窗体为无边框样式
setWindowFlag(Qt::FramelessWindowHint);
}
void mousePressEvent(QMouseEvent *e)
{
// 保存鼠标按下时的位置(相对该窗体左上角的偏移量)
_offsest = e->pos();
}
void mouseMoveEvent(QMouseEvent *e)
{
// 计算鼠标移动时,窗体应移动到的目标位置
auto pos = mapToParent(e->pos());
move(pos - _offset);
}
喜欢我的博客的朋友,可以给我点赞嘛!
感谢你们的支持和热爱!有任何想要讨论的问题,均可与我联系。
QQ:1575335819
微信:CS-huo
邮箱:gkzscs@hotmail.com