参考
https://blog.csdn.net/Furrain/article/details/101688123
简介
很多时候我们希望创建一个弹出窗口,并且有可能是顶级窗口。这时需要一些操作来让窗口失去焦点时隐藏。
1.设置窗口属性为Qt::window使得窗口出现时强制获取到焦点
在构造函数中添加如下代码
this->setWindowFlags(Qt::Window|Qt::FramelessWindowHint);
installEventFilter(this);
2.当活动窗口不是此窗口时(焦点消失时),隐藏窗口
重写事件过滤器
bool subTitleSetWid::eventFilter(QObject *o, QEvent *e)
{
if (e->type() == QEvent::ActivationChange)
{
if(QApplication::activeWindow() != this)
{
this->hide();
}
}
return QWidget::eventFilter(o,e);
}