Qt设置窗口点击别的地方消失

参考

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)
        {
            qDebug()<<"1";
            this->hide();
        }
    }
    return QWidget::eventFilter(o,e);
}

 

你可能感兴趣的:(Qt基础)