使用activeWindow()获知当前程序是否有其他弹窗

1.实际开发遇到的场景:当程序除了主界面外,还有其他弹窗时,需要禁用一些操作,像出现警示的QMessageBox、向导窗口QWizard、模态或非模态的QWidget如帮助窗口等等,在这种场景下,我们该如何获知当前是否有其他弹窗。
2.场景假设:我们的主界面为MainWindow.
3.解决方法:QApplication的activeWindow()方法可以返回当前焦点所在的顶级窗口,在有其他弹窗时,返回值为该弹窗;反之,则为程序的主界面。
4.代码参考

QWidget *pActiveWindow = QApplication::activeWindow();
MainWindow *pMainWindow = dynamic_cast(pActiveWindow);
if(pMainWindow && pMainWindow == this)
{
	//...do something
	//这里为当前程序未有其他弹窗
}

你可能感兴趣的:(Qt学习之路,activeWindow的使用,获取当前程序是否有弹窗)