前言
用 Qt 开发桌面端程序的时候,通常会去掉自带的标题栏,然后自定义一个标题栏,那么就需要实现通过鼠标来移动窗体。实现逻辑其实很简单,只需要捕捉到鼠标的坐标点,在 mouseMove 事件中实现窗体移动。
源码
void ActionWidget::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
mousePress = true;
}
//窗口移动距离
movePoint = event->globalPos() - pos();
}
void ActionWidget::mouseReleaseEvent(QMouseEvent *event)
{
Q_UNUSED(event)
mousePress = false;
}
void ActionWidget::mouseMoveEvent(QMouseEvent *event)
{
if(mousePress)
{
QPoint movePos = event->globalPos();
move(movePos - movePoint);
}
}