一般使用QDialog写登录无边框窗口后,窗口无法移动。需要重写鼠标事件,计算窗口移动的位置并显示。
->头文件自己引
.h文件添加以下代码
private:
void mousePressEvent(QMouseEvent* event) override;
void mouseMoveEvent(QMouseEvent* event) override;
private:
//记录鼠标,窗口位置
QPoint windowPos;
QPoint mousePos;
QPoint dPos;
.cpp
void CLoginDlg::mousePressEvent(QMouseEvent* event)
{
this->windowPos = this->pos(); // 获得部件当前位置
this->mousePos = event->globalPos(); // 获得鼠标位置
this->dPos = mousePos - windowPos; // 移动后部件所在的位置
}
void CLoginDlg::mouseMoveEvent(QMouseEvent* event)
{
this->move(event->globalPos() - this->dPos);
}