Qt自动关闭窗口的方式:
- 利用 Qt::Popup,可以实现点击窗口外区域自动关闭窗口;
- 利用 Qt::WA_NoMouseReplay,可以避免重复触发窗口外的鼠标点击事件(仅关闭窗口);
- 利用 activeWindows(),可以解决Qt::Popup属性的窗口无法输入中文的问题(show之后调用);
问题:点击其他区域,回关闭窗口,但点击到触发窗口显示的按钮,窗口被关闭了。
解决办法:
bool MyWidget::event(QEvent * e)
{
if (QEvent::Show == e->type())
{
activateWindow();
}
else if (QEvent::WindowDeactivate == e->type())
{
this->close();
}
return QWidget::event(e);
}