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);}