在应用程序的界面设计中,很多时候我们希望窗口能够拥有更好的视觉效果,比如设置圆角以及去除默认的标题栏,使窗口看起来更加美观。此外,还需要支持用户通过鼠标拖动窗口。在本文中,我们将详细介绍如何在 Qt 中实现这些效果。
如图:
一、设置无边框窗口
Qt 提供了 Qt::FramelessWindowHint
窗口标志(flag),可以去除窗口的标题栏和边框,实现自定义窗口的样式。具体代码如下:
// 设置窗口为无边框
this->setWindowFlags(Qt::FramelessWindowHint);
通过设置无边框的窗口标志,窗口将不再显示默认的标题栏。这样可以为我们实现自定义窗口外观提供更大的灵活性。
二、实现窗口拖动
由于我们去除了标题栏,默认情况下无法拖动窗口。因此,我们需要自己实现拖动功能。我们可以通过捕获鼠标事件并计算鼠标移动的偏移量来实现窗口的拖动。
1. 定义拖动相关的成员变量
首先在 MainWindow
类中添加成员变量,用来记录拖动状态和拖动起始位置:
private:bool m_dragging; // 是否正在拖动QPoint m_dragPosition; // 鼠标按下时的初始位置