QT移动无边框窗口

来源:互联网 发布:墨子号 知乎 编辑:程序博客网 时间:2024/05/02 06:10

将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


0 0