QDialog实现的无边框无自定义标题栏的窗口无法移动问题

一般使用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);
}


版权声明:本文为ACE_YOUNG原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。