将QT设计窗口设置成无边框形式后无法移动窗口,在网上找了一些材料,挑选了一个适合自己的,现在分享出来。
1,在 wight.h 里面定义一个公共成员变量 QPoint dragPosition;
2,重写鼠标按下事件和鼠标移动事件
鼠标按下事件
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
dragPosition = event->globalPos()-frameGeometry().topLeft();
//globalPos()获取根窗口的相对路径,frameGeometry().topLeft()获取主窗口左上角的位置
event->accept(); //鼠标事件被系统接收
}
}
鼠标点击事件
void Widget::mouseMoveEvent(QMouseEvent *event)
{
this->move(event->globalPos()-dragPosition);
event->accept();
}ok,好嘞,很简单是吧。
【参考】http://www.xuebuyuan.com/1899289.html