QT无标题栏加移动窗体

来源:互联网 发布:php空格代码 编辑:程序博客网 时间:2024/05/01 20:20

添加几个成员变量

boolm_MousePressed;QPointm_MousePos;QPointm_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>

避免出现“使用了未定义类型”的错误

原创粉丝点击