在 Qt 中实现可拖动的无边框 MainWindow 并设置圆角效果

在应用程序的界面设计中,很多时候我们希望窗口能够拥有更好的视觉效果,比如设置圆角以及去除默认的标题栏,使窗口看起来更加美观。此外,还需要支持用户通过鼠标拖动窗口。在本文中,我们将详细介绍如何在 Qt 中实现这些效果。
如图:

一、设置无边框窗口

Qt 提供了 Qt::FramelessWindowHint 窗口标志(flag),可以去除窗口的标题栏和边框,实现自定义窗口的样式。具体代码如下:
 

// 设置窗口为无边框
this->setWindowFlags(Qt::FramelessWindowHint);

通过设置无边框的窗口标志,窗口将不再显示默认的标题栏。这样可以为我们实现自定义窗口外观提供更大的灵活性。

二、实现窗口拖动

由于我们去除了标题栏,默认情况下无法拖动窗口。因此,我们需要自己实现拖动功能。我们可以通过捕获鼠标事件并计算鼠标移动的偏移量来实现窗口的拖动。

1. 定义拖动相关的成员变量

首先在 MainWindow 类中添加成员变量,用来记录拖动状态和拖动起始位置:
 

private:
    bool m_dragging;           // 是否正在拖动
    QPoint m_dragPosition;     // 鼠标按下时的初始位置
2. 实现鼠
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值