实现Qt无标题窗口移动的改进

前面我写了一个关于Qt无标题窗口的移动,当初我为了实现窗体移动,用了一个frame看成标题栏,当鼠标在frame范围内移动,整个窗体就随着移动,现在不再采用frame,而是直接把鼠标放在窗体的标题栏的那个位置就移动,实现代码如下(代码和以前代码大致相同)

头文件:

private:

QPoint offset; //记录 获取鼠标位置与窗口位置的差值

bool m_bisMoveable; //判断鼠标是否放在无标题窗口栏的标题栏范围内

protected:

void virtual mousePressEvent(QMouseEvent *);

void virtual mouseMoveEvent(QMouseEvent *);

void virtual mouseReleaseEvent(QMouseEvent  *);


源文件

#include <QMouseEvent>

在够造函数对m_bisMoveable初始化

m_bisMoveable = false;


void Dialog::mousePressEvent(QMouseEvent *event)

{

if(event->buttons() == Qt::LeftButton)

{

offset = event->globalPos() - pos();

QRect rect(0,0,this->size().width,27); //就是之前frame的大小

if(rect.contains(event->pos())

{

m_bisMoveable = true;

}

}

}


void Dialog::mouseMoveEvent(QMouseEvent *event)

{

if(event->buttons&Qt::LeftButton&&m_bisMoveable)

{

move(event->golbalPos() - offset);

}

}

void Dialog::mouseReleaseEvent(QMouseEvent *event)

{

if(m_bisMoveable)

{

m_bisMoveable = false;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值