Qt模态窗口详解
模态窗口概念
什么是模态窗口
模态对话框是一种阻止同一应用程序中其他可见窗口输入的对话框。通常,用于向用户请求文件名或设置应用程序首选项的对话框是模态的。对话框可以是应用程序模态(默认)或窗口模态。
打开应用程序模态对话框时,用户必须在访问应用程序中的任何其他窗口之前完成与对话框的交互并关闭它。窗口模态对话框仅阻止对话框关联的窗口的访问,允许用户继续使用应用程序中的其他窗口。
显示模态对话框的最常见方法是调用其exec()函数。当用户关闭对话框时,exec()将提供一个有用的返回值。要关闭对话框并返回适当的值,您必须连接一个默认按钮(例如确定按钮)到accept()槽,并将一个取消按钮连接到reject()槽。或者,您可以调用done()槽并传入Accepted或Rejected。
另一种方法是调用setModal(true)或setWindowModality(),然后调用show()。与exec()不同,show()会立即将控制权返回给调用者。调用setModal(true)对于进度对话框特别有用,其中用户必须能够与对话框进行交互,例如取消长时间运行的操作。如果您同时使用show()和setModal(true)执行长时间操作,您必须在处理过程中定期调用QCoreApplication::processEvents(),以使用户能够与对话框进行交互。(参见QProgressDialog。)
模态窗口为什么能够禁用其他窗口
GPT给出的答案是因为阻塞了事件循环
demo
QTimer* timer = new QTimer();
timer-&