重写鼠标按下,松开,移动事件
/** 鼠标按下事件
*/
void mousePressEvent(QMouseEvent* event);
/** 鼠标松开事件
*/
void mouseReleaseEvent(QMouseEvent* event);
/** 鼠标移动事件
*/
void mouseMoveEvent(QMouseEvent* event);
头文件成员
/** 鼠标按下判断
*/
bool m_isPressed = false;
/** 坐标
*/
QPoint m_startMovePos;
cpp文件
#define PAY_WND_HEIGHT 570 // 窗口宽度
#define TITLE_BAR_HEIGHT 40 // 按下可拖动的范围高度
// 鼠标按下事件
void mousePressEvent(QMouseEvent* event)
{
m_startMovePos = event->globalPos();
if (event->pos().x() <= 0)
return;
if (event->pos().x() >= PAY_WND_WIDTH)
return;
if (event->pos().y() <= 0)
return;
if (event->pos().y() >= TITLE_BAR_HEIGHT)
return;
m_isPressed = true;
}
// 鼠标松开事件
void mouseReleaseEvent(QMouseEvent*)
{
m_isPressed = false;
}
// 鼠标移动事件
void mouseMoveEvent(QMouseEvent* event)
{
if (m_isPressed)
{
QPoint movePoint = event->globalPos() - m_startMovePos;
QPoint widgetPos = this->pos();
m_startMovePos = event->globalPos();
this->move(widgetPos.x() + movePoint.x(), widgetPos.y() + movePoint.y());
}
}