Qt模态窗口详解

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-&
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值