qt自定义标题栏的关闭事件
时间: 2023-08-16 14:04:17 浏览: 107
如果你想自定义 Qt 窗口的标题栏关闭事件,可以通过以下步骤来实现:
1. 重写 QWidget 类的 mousePressEvent() 方法,以便捕获标题栏上的鼠标点击事件。
2. 在 mousePressEvent() 方法中,检查鼠标点击的位置是否在标题栏上,如果是,则执行关闭操作。
下面是一个示例代码:
```cpp
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent)
{
// 设置窗口标题
setWindowTitle("My Widget");
// 设置窗口样式为无边框窗口
setWindowFlags(Qt::FramelessWindowHint);
}
protected:
// 重写鼠标点击事件
void mousePressEvent(QMouseEvent *event) override
{
// 获取鼠标点击位置
QPoint pos = event->pos();
// 如果鼠标点击在标题栏上
if (pos.y() <= titleBarHeight())
{
// 执行关闭操作
close();
}
}
private:
// 获取标题栏高度
int titleBarHeight()
{
return style()->pixelMetric(QStyle::PM_TitleBarHeight);
}
};
```
在这个示例中,我们重写了 QWidget 类的 mousePressEvent() 方法,并检查鼠标点击位置是否在标题栏上。如果是,则执行关闭操作。为了使窗口样式为无边框窗口,我们使用了 setWindowFlags() 方法,并将其参数设置为 Qt::FramelessWindowHint。
阅读全文