点击窗口外其他地方关闭
setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);
窗口失去焦点关闭
1.示例一
bool testWidget::eventFilter(QObject *obj, QEvent *event)
{
if (Q_NULLPTR == obj) {
return false;
}
if (QEvent::ActivationChange == event->type()) {
if(QApplication::activeWindow() != this){
this->close();
}
}
return QWidget::eventFilter(obj, event);
}
2.示例二
bool testWidget::event(QEvent * event)
{
if (QEvent::ActivationChange == event->type()) {
if (QApplication::activeWindow() != this){
this->close();
}
}
return QWidget::event(event);
}
这篇博客介绍了如何使用Qt库在窗口无边框模式下,通过设置窗口标志和过滤事件,实现在窗口失去焦点或点击窗口外部时自动关闭窗口的功能。示例代码展示了两种不同的事件处理方法,分别是使用`eventFilter`和`event`函数来监听窗口激活状态的变化,并在不再处于活动状态时关闭窗口。
1693






