添加几个成员变量
bool m_MousePressed;
QPoint m_MousePos;
QPoint m_WindowPos;
重载几个函数
void mousePressEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *);
实现如下
void MyClass::mousePressEvent(QMouseEvent *lpEvent)
{
__super::mousePressEvent(lpEvent);
if (lpEvent->button() == Qt::LeftButton)
{
m_WindowPos = this->pos();
m_MousePos = lpEvent->globalPos();
this->m_MousePressed = true;
}
}
void MyClass::mouseReleaseEvent(QMouseEvent *lpEvent)
{
__super::mouseReleaseEvent(lpEvent);
if (lpEvent->button() == Qt::LeftButton)
{
this->m_MousePressed = false;
}
}
void MyClass::mouseMoveEvent(QMouseEvent *lpEvent)
{
if (m_MousePressed)
{
this->move(m_WindowPos + (lpEvent->globalPos() - m_MousePos));
}
}
有没有必要调用父类函数不清楚,注释掉后未发现问题
另外需要在构造时调用
this->setWindowFlags(Qt::FramelessWindowHint);
以去掉标题栏,记得添加
#include <QPoint>
#include <QMouseEvent>
避免出现“使用了未定义类型”的错误