【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建

2024-06-11 15:44

本文主要是介绍【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt窗口 | 对话框 | 创建模态及非模态对话框

文章编号:Qt 学习笔记 / 53

文章目录

  • Qt窗口 | 对话框 | 创建模态及非模态对话框
    • 一、模态对话框
      • 1. 对话框简介
      • 2. 创建模态对话框
    • 二、非模态对话框
      • 1. 对话框简介
      • 2. 创建模态对话框
    • 三、两者的使用场景
      • 1. 模态对话框
      • 2. 非模态对话框


一、模态对话框

1. 对话框简介

模态对话框是一种在图形用户界面中常见的弹出窗口,它与其他窗口交互时会将其他窗口锁定,只有在关闭模态对话框之后才能再次操作其他窗口。模态对话框通常用于提示用户进行必要的操作或提供额外的选项,以便用户在继续执行其他操作之前确认或选择。在模态对话框中,用户通常需要完成或取消对话框中的任务或操作,才能继续与应用程序进行交互。

在这里插入图片描述

2. 创建模态对话框

模态对话框,显示后⽆法与父窗口进行交互,是⼀种阻塞式的对话框。使用QDialog::exec()函数调用。参考文章【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框

void MainWindow::handle()
{//创建一个对话框Dialog * dialog = new Dialog(this);//设置窗口的大小dialog->resize(300,180);//设置窗口关闭dialog->setAttribute(Qt::WA_DeleteOnClose);//显示窗口dialog->exec();
}

在这里插入图片描述


二、非模态对话框

1. 对话框简介

非模态对话框是一种不需要阻塞用户操作的对话框。与模态对话框不同,用户可以在非模态对话框打开的同时继续对程序进行操作。这种对话框通常用于显示辅助信息、提供额外选项、展示进度等场景。非模态对话框的特点:不阻塞用户操作、可以并行打开多个对话框、弹出方式不影响主界面

2. 创建模态对话框

非模态对话框显示后独立存在,可以同时与父窗口进行交互,是⼀种非阻塞式对话框,使用
QDialog::show()函数调用。参考文章【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框

void MainWindow::handle()
{//创建一个对话框Dialog * dialog = new Dialog(this);//设置窗口的大小dialog->resize(300,180);//设置窗口关闭dialog->setAttribute(Qt::WA_DeleteOnClose);//显示窗口dialog->show();
}

在这里插入图片描述


三、两者的使用场景

1. 模态对话框

模态对话框的使用场景包括:

  • 提示用户确认操作:模态对话框可以用于提示用户确认是否执行某个操作,例如删除文件、关闭窗口等。
  • 获取用户输入:模态对话框可以用于获取用户输入,例如填写表单、输入密码等。
  • 显示提示信息:模态对话框可以用于显示提示信息或警告信息,例如错误提示、操作成功提示等。
  • 进行选择或设置:模态对话框可以用于用户进行选择或设置,例如选择文件、选择日期、设置选项等。
  • 显示详细信息:模态对话框可以用于显示详细信息或查看详细内容,例如查看文件属性、查看订单详情等。

2. 非模态对话框

非模态对话框的使用场景包括:

  • 显示辅助信息:例如提示用户某个操作的结果或提醒用户注意事项。
  • 提供额外选项:例如在程序主界面上方打开一个工具条,供用户快速访问某些功能。
  • 展示进度:例如在后台执行某个操作时,可以打开一个对话框显示操作的进度和状态。

在这里插入图片描述

这篇关于【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051596

相关文章

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.