1.创建继承自QWidget的派生类QXXX,并重载QWidget类的三个鼠标事件虚函数
void QWidget::mousePressEvent(QMouseEvent *event);
void QWidget::mouseMoveEvent(QMouseEvent *event);
void QWidget::mouseReleaseEvent(QMouseEvent *event);
2.声明变量
bool bMoving = false;
QPoint lstPos;
3.声明函数
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
4.鼠标事件的实现
// 左键按下事件
void QXXX::mousePressEvent(QMouseEvent *event)
{
if (Qt::LeftButton == event->button())
{
bMoving = true;
lstPos = event->globalPos() - pos();
}
return QWidget::mousePressEvent(event);
}
// 鼠标移动事件
void QXXX::mouseMoveEvent(QMouseEvent *event)
{
if (bMoving && (event->buttons() && Qt::LeftButton) &&
((event->globalPos() - lstPos).manhattanLength() > QApplication::startDragDistance()))
{
move(event->globalPos() - lstPos);
lstPos = event->globalPos() - pos();
}
return QWidget::mouseMoveEvent(event);
}
// 鼠标释放事件
void QXXX::mouseReleaseEvent(QMouseEvent *event)
{
bMoving = false;
}