需求描述:将QDialog或QMainWindow设置为FrameLess格式后,无法使用鼠标拖动;或者自己创建的控件不能被鼠标拖动。 我们的目的是让这个控件可以被鼠标拖动。
实现方法:重写这个控件的QMouseEvent函数(包括QMousePressEvent,QMouseRealseEvent和QMouseMoveEvent)
具体代码实现(需要使用QMouseEvent):
(1)pro文件中加入:
QT += gui
(2)h文件的类中加入头文件:
#include <QMouseEvent>
类中加入函数和变量声明:
protected:
void mouseMoveEvent(QMouseEvent* event);
void mousePressEvent(QMouseEvent* event);
void mouseReleaseEvent(QMouseEvent* event);
private:
QPoint mLastMousePosition;
bool mMoving;
(3)cpp文件中加入鼠标事件相关函数的定义(我将上面的函数声明放入我创建的类login中了,所以下面的函数定义是 login::):
void login::mousePressEvent(QMouseEvent* event)
{
if(e