当前位置: 首页 > news >正文

【Qt】对话框

文章目录

  • 1 :peach:对话框介绍:peach:
  • 2 :peach:对话框的分类:peach:
    • 2.1 :apple:模态对话框:apple:
    • 2.2 :apple:非模态对话框:apple:
    • 2.3 :apple:混合属性对话框:apple:
  • 3 :peach:Qt 内置对话框:peach:
    • 3.1 :apple:消息对话框 QMessageBox:apple:


1 🍑对话框介绍🍑

对话框是 GUI 程序中不可或缺的组成部分。⼀些不适合在主窗⼝实现的功能组件可以设置在对话框中。对话框通常是⼀个顶层窗⼝,出现在程序最上层,⽤于实现短期任务或者简洁的⽤⼾交互。Qt常⽤的内置对话框有:QFiledialog(⽂件对话框)、QColorDialog(颜⾊对话框)、QFontDialog(字体对话框)、QInputDialog (输⼊对话框)和 QMessageBox(消息框) 。


2 🍑对话框的分类🍑

对话框分为 模态对话框非模态 对话框。

2.1 🍎模态对话框🍎

模态对话框指的是:显⽰后⽆法与⽗窗⼝进⾏交互,是⼀种阻塞式的对话框。使⽤ QDialog::exec() 函数 调⽤。模态对话框适⽤于必须依赖⽤⼾选择的场合,⽐如消息显⽰,⽂件选择,打印设置等。

代码示例:
在这里插入图片描述
验证:
在这里插入图片描述
此时如果我们在未关闭该对话框的话就不能够去点击父窗口相关的控件了。

2.2 🍎非模态对话框🍎

⾮模态对话框显⽰后独⽴存在,可以同时与⽗窗⼝进⾏交互,是⼀种非阻塞式对话框,使⽤QDialog::show()函数调⽤。⾮模态对话框⼀般在堆上创建,这是因为如果创建在栈上时,弹出的⾮模态对话框就会⼀闪⽽过。同时还需要设置 Qt:WA_DeleteOnClose 属性,⽬的是:当创建多个⾮模态对话框时(如打开了多个⾮模态窗⼝),为了避免内存泄漏要设置此属性。⾮模态对话框适⽤于特殊功能设置的场合,⽐如查找操作,属性设置等。

代码示例:
在这里插入图片描述

验证:
在这里插入图片描述
此时在关闭对话框前我们可以还打开很多个对话框。代码中我们还设置了Qt:WA_DeleteOnClose属性来防止内存泄漏,大家此时可能会有疑问,我们不是将对话框加入到了MainWindow的对象树里面去了吗?MainWindow销毁时这些对话框不就会自动销毁吗?按道理这样是没错,但是在MainWindow未退出前,如果创建了非常多的对话框,此时可能会造成大量空间浪费,所以使用Qt:WA_DeleteOnClose属性后当我们点击对话框右上角的X后就会被自动回收。

2.3 🍎混合属性对话框🍎

混合属性对话框同时具有模态对话框和⾮模态对话框的属性,对话框的⽣成和销毁具有⾮模态对话框属性,功能上具有模态对话框的属性。使⽤ QDialog::setModal() 函数 可以创建混合特性的对话框。通常,创建对话框时需要指定对话框的⽗组件。

代码示例:
在这里插入图片描述
效果就跟模态对话框一致。


3 🍑Qt 内置对话框🍑

Qt 提供了多种可复⽤的对话框类型,即 Qt 标准对话框。Qt 标准对话框全部继承于 QDialog 类。常⽤标准对话框如下:

在这里插入图片描述

3.1 🍎消息对话框 QMessageBox🍎

消息对话框是应⽤程序中最常⽤的界⾯元素。消息对话框主要⽤于为⽤⼾提⽰重要信息,强制⽤⼾进⾏选择操作。QMessageBox类 中定义了静态成员函数,可以直接调⽤创建不同⻛格的消息对话框,其中包括:
在这里插入图片描述

我这里就只演示Critical风格的消息对话框,其他的也同理:
代码示例:
在这里插入图片描述
结果验证:
在这里插入图片描述
除了使用上面的方式外,QMessageBox中还内置了一些静态的成员函数:
在这里插入图片描述

使用这些函数我们可以更加方便的创建一些简单的消息对话框,比如上面的代码我们还可以这样写:

QMessageBox::critical(this,"消息对话框","警告、警告!!!",QMessageBox::No,QMessageBox::Close);

同样的也能够完成上述的工作。

但是如果我们想要将自定义的按钮添加到消息对话框里面应该怎么办呢?我们刻意使用addButton来进行添加:
在这里插入图片描述
结果验证:
在这里插入图片描述
在一些更加复杂的业务处理中我们还可以将该按钮添加一个槽函数使用connect连接即可。

那假如我们想要知道用户点击的是哪一个按钮呢?
其实exec函数(注意show函数是没有返回值的)的返回值就可以拿到:

    QPushButton* button=new QPushButton(this);button->setText("kill all");message->addButton(button,QMessageBox::AcceptRole);int t=message->exec();if(t == QMessageBox::No)qDebug()<<"No";else if(t == QMessageBox::Yes)qDebug()<<"Yes";elseqDebug()<<"Other";

在这里插入图片描述

相关文章:

【Qt】对话框

文章目录 1 :peach:对话框介绍:peach:2 :peach:对话框的分类:peach:2.1 :apple:模态对话框:apple:2.2 :apple:非模态对话框:apple:2.3 :apple:混合属性对话框:apple: 3 :peach:Qt 内置对话框:peach:3.1 :apple:消息对话框 QMessageBox:apple: 1 &#x1f351;对话框介绍&#x…...

Python | 武理刷题

1. 为什么是非法的&#xff1f; a1a1 在Python&#xff08;以及大多数其他编程语言&#xff09;中&#xff0c;表达式 a1a1 是非法的&#xff0c;因为它试图将一个值&#xff08;a1 的结果&#xff09;赋给一个表达式&#xff08;a1 本身&#xff09;&#xff0c;而不是一个…...

如何设置让背景颜色不包括 padding 部分,顺带全面学习 background-clip 属性(可以实现文字渐变)

先解决需求 实现背景颜色不包括 padding 部分&#xff0c;直接给容器添加 css 属性&#xff1a;background-clip:content-box; 示例代码&#xff1a; .content-box-example {background-color: lightblue;padding: 20px;border: 1px solid black;background-clip: content-bo…...

Oracle 序列-SEQUENCE

文章目录 序列-SEQUENCE创建序列访问序列序列的修改和删除查询序列信息 序列-SEQUENCE 创建序列 访问序列 序列的修改和删除 DROP SEQUENCE SEQ_EKPO;查询序列信息 可以通过视图 dba/all/user_sequences 查询序列的相关信息 SELECT SEQUENCE_NAME FROM DBA_SEQUENCES WHERE …...

8岁儿童学编程基础好吗:探索早期编程教育的利与弊

8岁儿童学编程基础好吗&#xff1a;探索早期编程教育的利与弊 在数字化快速发展的今天&#xff0c;编程技能已成为一项重要的能力。许多家长开始思考&#xff0c;是否应该让8岁的孩子学习编程基础。这个问题看似简单&#xff0c;实则涉及多个层面的考量。下面&#xff0c;我们…...

vue3加axios配合element-plus实现图片等文件本地上传,并获取服务器返回的真实地址数据,前端写法

小白写法嘿嘿 开发工具和关键词 开发工具&#xff1a; vscode 关键词&#xff1a;vue3、element-plus、axios 后端 后端业务逻辑处理使用的是unicloud的云函数&#xff0c;大家可以看我上一篇文章。 思路 1、禁止element-plus的el-upload组件自动上传&#xff0c;变成手动上传…...

面试题:谈谈你对观察者和订阅发布的理解

面试题&#xff1a;谈谈你对观察者和订阅发布的理解 1. 观察者设计模式 场景引入之杂志订阅&#xff1a;小王想要购买一本尚未出版的杂志&#xff0c;他向出版社预订该杂志并提供联系方式&#xff0c;一旦该杂志出版&#xff0c;出版社就会根据小王预留的联系方式通知他可以来…...

下载文件流

export function downloadFile(file, name, type) { const link document.createElement(‘a’) link.href window.URL.createObjectURL(new Blob([file], { type: type })) link.target ‘_blank’ link.download name document.body.appendChild(link) link.click() docu…...

有开源软件,也有开源硬件?

开源软件或库有很多&#xff0c;例如 Linux 操作系统的内核 The Linux Kernel Archiveshttps://www.kernel.org/ 开源的各种Linux发行版本&#xff0c;Ubuntu 、CentOS等 Enterprise Open Source and Linux | Ubuntuhttps://ubuntu.com/ 开源的视觉函数库&#xff0c;OpenC…...

【TensorFlow深度学习】卷积层变种与深度残差网络原理

卷积层变种与深度残差网络原理 卷积层变种与深度残差网络&#xff1a;探究卷积神经网络的进化与优化策略卷积层&#xff1a;深度学习的基石变种与卷积层变种深差网络&#xff1a;深度网络的优化策略实战代码示例&#xff1a;ResNet模块实现结语 卷积层变种与深度残差网络&#…...

每日一题《leetcode-- LCR 025.两数相加||》

https://leetcode.cn/problems/lMSNwu/ 分别把给定的两个链表翻转&#xff0c;然后从头开始相加。 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ //反转链表 struct ListNode* reverselist(struct ListNode*h…...

MySQL数据库的约束

MySQL对于数据库存储的数据, 做出一些限制性要求, 就叫做数据库的"约束". 在每一列的 列名, 类型 后面加上"约束". 一. not null (非空) 指定某列不能存储null值. 二. unique (唯一) 保证这一列的每行必须有唯一值. 我们可以看到, 给 table 的 sn 列插…...

计算机毕业设计 | springboot+vue会议室管理系统(附源码)

1&#xff0c;绪论 1.1 项目背景 随着企业规模的不断扩大&#xff0c;会议室管理愈加复杂。传统的手工预约会议室的方式已经无法满足现代企业的需求&#xff0c;因此&#xff0c;开发一套会议室系统方案变得尤为重要。会议室系统可以实现会议室的在线预约、会议室资源的有效利…...

常见端口及其脆弱点

端口及脆弱性 ⚫ FTP (21/TCP) 1.默认用户名密码anonymous:anonymous 2.暴力破解密码 3.VSFTP 某版本后门 ⚫ SSH (22/TCP) 1.部分版本 SSH 存在漏洞可枚举用户名 2.暴力破解密码 ⚫ Telent (23/TCP) 1.暴力破解密码 2.嗅探抓取明文密码 ⚫ SMTP (25/TCP) 1.无认证…...

JS函数的进阶

目录 递归和堆栈Rest参数与Spread语法闭包全局对象高阶函数函数对象和绑定装饰者模式和转发深入理解箭头函数递归和堆栈 递归 递归是一种编程技巧,函数在其定义中直接或间接地调用自身,通常用来解决具有明确递归结构的问题,如树形结构遍历、排序算法(如快速排序)、数学问…...

【UE+GIS】UE5GIS CAD或shp构建3D地形

贴合地形的矢量图形实现方法 一、灰度图的制作和拉伸换算1、基于高程点集实现2、基于等高线实现3、拉伸计算 二、生成地形模型的实现方案1、3Dmax导入灰度图2、使用ArcMap/Arcpro/FME等GIS数据处理工具3、UE导入灰度图 三、地形上叠加地形渲染效果的实现方案1、贴花2、数据渲染…...

Unity学习笔记---音视频播放

音频 Audiolistener组件 AudioListener组件是音频监听器&#xff0c;将组件挂在角色或camera上面&#xff0c;每个场景中最多只有一个AudioListener组件。 AudioSource组件 AudioSource组件是音源&#xff0c;用来播放音频AudioClip.将他挂在产生声音的物体上&#xff0c;可…...

项目集成过程中的makefile记录

项目集成过程中的makefile记录 文章目录 项目集成过程中的makefile记录1.基础概念注释打印赋值方式常用变量$ 伪目标函数wildcard 多目录、文件操作 2.思路梳理**需求分析**目录结构 3.可行示例 持续更新中1.基础概念 注释 # 示例&#xff1a; # 项目名称打印 echo "H…...

Vue3 -Computed计算属性

前言&#xff1a; Computed属性属于Vue3中的响应式核心(与之共同说明的还有ref&#xff0c;reactive&#xff0c;watch...) 接受一个 getter 函数&#xff0c;返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。它也可以接受一个带有 get 和 set…...

MySQL—函数—日期函数(基础)

一、引言 接下来讨论和学习关于函数的第三个方面——日期函数。 常见的MySQL当中的日期函数。 注意&#xff1a; 1、CURDATE()&#xff1a;cur&#xff1a;current 当前的&#xff0c;返回的是当前日期。 2、CURTIME()&#xff1a;当前时间。 3、NOW&#xff1a;当前的日期和…...

Steam Deck Tools 终极指南:Windows 掌机的完美伴侣

Steam Deck Tools 终极指南&#xff1a;Windows 掌机的完美伴侣 【免费下载链接】steam-deck-tools (Windows) Steam Deck Tools - Fan, Overlay, Power Control and Steam Controller for Windows 项目地址: https://gitcode.com/gh_mirrors/st/steam-deck-tools 还在为…...

6.6k Star 这个内网穿透神器,一行命令开通公网域名,前后端联调神器!

&#x1f449; 这是一个或许对你有用的社群&#x1f431; 一对一交流/面试小册/简历优化/求职解惑&#xff0c;欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料&#xff1a; 《项目实战&#xff08;视频&#xff09;》&#xff1a;从书中学&#xff0c;往事中…...

45k Star 的 AI 编程神器:Claude Code / Codex / Cursor Token 一律打 2 折

&#x1f449; 这是一个或许对你有用的社群&#x1f431; 一对一交流/面试小册/简历优化/求职解惑&#xff0c;欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料&#xff1a; 《项目实战&#xff08;视频&#xff09;》&#xff1a;从书中学&#xff0c;往事中…...

长期使用Taotoken Token Plan套餐在项目开发中的成本优势体会

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken Token Plan套餐在项目开发中的成本优势体会 在项目开发中&#xff0c;尤其是涉及大模型API调用的场景&#xff0…...

从零实现一个电商图片下载器:技术方案与核心代码

引言如果你想自己开发一款电商图片下载工具&#xff0c;本文提供完整的技术方案和核心代码参考。一、技术选型组件推荐方案备选方案浏览器内核CEFElectron下载库libcurlrequests界面框架QtElectron跨平台CEF QtElectron二、核心代码实现2.1 浏览器初始化cppCefRefPtr<CefBr…...

专业联发科设备bootloader解锁与安全绕过实战指南

专业联发科设备bootloader解锁与安全绕过实战指南 【免费下载链接】mtkclient-gui GUI tool for unlocking bootloader and bypassing authorization on Mediatek devices (Not maintained anymore) 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient-gui mtkclie…...

如何用Win11Debloat免费为Windows系统瘦身:终极优化指南

如何用Win11Debloat免费为Windows系统瘦身&#xff1a;终极优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …...

配置Hermes Agent使用自定义Taotoken作为模型供应商的步骤

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 配置Hermes Agent使用自定义Taotoken作为模型供应商的步骤 1. 准备工作&#xff1a;获取必要的凭证 在开始配置之前&#xff0c;你…...

机器人仿真终极指南:使用WPR系列从零构建ROS虚拟测试环境 [特殊字符]

机器人仿真终极指南&#xff1a;使用WPR系列从零构建ROS虚拟测试环境 &#x1f680; 【免费下载链接】wpr_simulation 项目地址: https://gitcode.com/gh_mirrors/wp/wpr_simulation 在机器人开发领域&#xff0c;硬件成本高昂、测试周期漫长是每个开发者面临的现实挑战…...

VSCode+GCC+OpenOCD:打造你的STM32专属OpenHarmony 3.1开发流水线

VSCodeGCCOpenOCD&#xff1a;构建STM32 OpenHarmony开发的高效流水线 在嵌入式开发领域&#xff0c;效率往往取决于工具链的整合程度。当OpenHarmony遇上STM32&#xff0c;如何摆脱传统IDE的束缚&#xff0c;打造一套现代化、可定制的开发环境&#xff1f;本文将带你从零搭建基…...