英雄联盟网站设计,广州专业网站建设哪里有,做的网站不能放视频软件,湖南微信小程序开发制作文章目录 前言一、定义1. 模态 (Modal)2. 非模态 (Non-modal) 二、GUI中1. 模态#xff08;Modal#xff09;对话框2. 非模态#xff08;Modeless#xff09;对话框 三、模态 vs 非模态 的对比四、何时使用模态和非模态对话框#xff1f;五、Qt 中 exec() 与 show() 的区别… 文章目录 前言一、定义1. 模态 (Modal)2. 非模态 (Non-modal) 二、GUI中1. 模态Modal对话框2. 非模态Modeless对话框 三、模态 vs 非模态 的对比四、何时使用模态和非模态对话框五、Qt 中 exec() 与 show() 的区别六、总结 前言
“模态”Modal和“非模态”Non-modal是描述交互界面中不同类型的用户界面组件如对话框、窗口等的术语。
一、定义
1. 模态 (Modal) 模态界面或组件是指在用户与该界面或组件交互时其他界面部分会被禁用或被遮挡用户必须先与模态组件进行交互例如关闭或确认才能继续与应用程序的其他部分进行交互。 特征:
阻止用户与主界面进行交互直到模态对话框被关闭。通常用于需要用户做出决策或确认的场景如警告、错误消息、确认框等。常见的例子有文件保存对话框、确认删除提示、用户登录弹窗等。 示例: 当你打开一个文件保存对话框时直到你点击“保存”或“取消”之前你无法操作主窗口的其他部分。 2. 非模态 (Non-modal) 非模态界面或组件允许用户在与该组件交互时仍然可以访问和操作其他界面部分。用户不必关闭非模态组件才能继续其他操作。 特征:
用户可以同时与多个界面部分交互。非模态组件不会阻塞用户的操作通常用于辅助性或信息显示类的组件。常见的例子有工具栏、消息通知、浮动菜单等。 示例: 打开一个工具栏或信息面板时你仍然可以继续操作主界面而不需要先关闭这些面板。 在 GUI 编程中模态Modal和 非模态Modeless是指对话框或窗口与应用程序主窗口之间的交互方式。
二、GUI中
1. 模态Modal对话框 模态对话框会在显示时 阻止用户与其他窗口进行交互直到对话框关闭为止。 特点
显示时会 阻塞其他窗口 的操作用户必须先处理对话框中的内容例如确认、取消等才能回到主窗口或其他窗口进行交互。在对话框关闭之前主窗口或其他窗口无法响应用户的操作。
常见应用 确认对话框例如“保存更改”、“是否退出” 等需要用户明确的选择如确认或取消。 登录窗口在登录完成之前用户无法进行其他操作。 Qt 中的模态对话框 例如QDialog::exec() 创建的是模态对话框它会阻止应用程序的其他操作直到对话框关闭。 示例
QDialog dialog(this); // 创建一个对话框
dialog.exec(); // 模态程序会阻塞直到对话框关闭
在这个例子中exec() 阻塞了后续代码的执行用户必须与对话框交互点击确认或取消才能继续。
2. 非模态Modeless对话框 非模态对话框则允许用户在显示对话框的同时与其他窗口进行交互。 特点 显示时 不阻止 主窗口或其他窗口的操作用户可以在对话框打开的同时与其他窗口进行交互。 一般用来显示不需要用户强制响应的工具窗口或信息窗口。 常见应用
工具窗口例如在编辑软件中打开的属性面板或工具栏用户可以随时关闭或最小化不需要与主窗口交互。信息提示框比如程序的状态信息用户可以查看并继续工作。
Qt 中的非模态对话框 例如QDialog::show() 创建的是非模态对话框它允许用户在显示对话框时仍然能够与应用程序的其他部分交互。 示例
QDialog dialog(this); // 创建一个对话框
dialog.show(); // 非模态程序不会被阻塞可以继续执行后续代码
在这个例子中show() 不会阻塞后续代码用户可以在对话框显示的同时继续操作主窗口。三、模态 vs 非模态 的对比
| d |d | |–1|–1| | d| d |
特性模态Modal非模态Modeless用户交互阻止与其他窗口的交互允许与其他窗口的交互窗口行为必须关闭对话框才能返回主窗口不需要关闭即可返回主窗口使用场景确认、选择、警告窗口等工具窗口、状态信息窗口、设置面板等Qt 实现exec()阻塞show()非阻塞
四、何时使用模态和非模态对话框
模态对话框 当你希望用户必须对某个问题做出明确回答时使用模态对话框。例如 确认是否保存文件确认退出程序需要用户输入并提交的数据登录、注册对话框等 非模态对话框 当你希望用户能够在与对话框交互的同时继续进行其他操作时使用非模态对话框。例如 属性面板、工具栏等状态信息、日志窗口等
五、Qt 中 exec() 与 show() 的区别 exec()创建一个 模态对话框会阻塞程序的执行直到用户关闭对话框并返回结果。 show()创建一个 非模态对话框不会阻塞程序的执行用户可以与其他窗口交互。 六、总结 模态对话框阻止用户与其他窗口交互直到处理完对话框中的内容。 非模态对话框允许用户与其他窗口交互同时处理对话框中的内容。