Qt窗口点击窗口外区域自动关闭窗口

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

猜你喜欢

转载自blog.csdn.net/u013015629/article/details/113528824