您的位置:首页 > 编程语言 > Qt开发

QT 窗口设置成无边框并实现拖动

2017-10-17 08:05 465 查看
根据需求需要把窗口设置成无边框的。

因为不熟悉,网上也各种百度,都没成功,最后发现使用一句话就搞定了。

setWindowFlags(Qt::FramelessWindowHint);

OK,这样窗口是无边框了,问题来了。我发现,不能拖动窗口了,它就死在那里不动了。只能重写一些函数了。

在头文件中定义如下:

void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *event);
QPoint mousePoint;            //鼠标拖动自定义标题栏时的坐标
bool mousePressed;            //鼠标是否按下


然后在资源文件中实现该函数:

void QUaFileShowDlg::mousePressEvent(QMouseEvent *event)

{

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

{

mousePressed = true;

mousePoint = event->pos();

}

}

void QUaFileShowDlg::mouseReleaseEvent(QMouseEvent *)

{

mousePressed = false;

}

void QUaFileShowDlg::mouseMoveEvent(QMouseEvent *event)

{

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

{

this->move(event->globalPos() - mousePoint);

event->accept();

}



这样就可以实现拖动了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: