accept() reject() hide()

1. accept()

用途

确认操作:表示用户完成了对话框的交互并确认了操作(如点击“确定”按钮)。
关闭模态对话框:结束 exec() 的事件循环,返回 QDialog::Accepted 结果码。

适用场景

模态对话框(通过 exec() 显示):

void SettingsDialog::on_btnOK_clicked() {// 保存数据或应用设置accept(); // 关闭对话框,返回 Accepted
}

结果处理:

if (dialog.exec() == QDialog::Accepted) {// 处理用户确认后的逻辑
}

行为

隐藏对话框,设置结果码为 Accepted。
不会销毁对话框对象(除非设置了 Qt::WA_DeleteOnClose)。

2. reject()

用途

取消操作:表示用户取消了对话框的交互(如点击“取消”按钮或关闭窗口)。
关闭模态对话框:结束 exec() 的事件循环,返回 QDialog::Rejected 结果码。

适用场景

模态对话框(通过 exec() 显示):
void SettingsDialog::on_btnCancel_clicked() {reject(); // 关闭对话框,返回 Rejected
}

结果处理:

if (dialog.exec() == QDialog::Rejected) {// 处理用户取消后的逻辑
}

行为

隐藏对话框,设置结果码为 Rejected。
不会销毁对话框对象(除非设置了 Qt::WA_DeleteOnClose)。

3. hide()

用途

隐藏窗口:仅隐藏对话框,不关闭或销毁对象,允许后续重复显示。
非模态对话框:适用于需要异步交互的场景,允许用户同时操作主窗口和对话框。

适用场景

非模态对话框(通过 show() 显示):
void SettingsDialog::on_btnOK_clicked() {// 发射信号传递数据emit settingsApplied(enable, mode);hide(); // 隐藏对话框,不销毁对象
}

临时隐藏窗口:

m_settingsDialog->hide(); // 隐藏后可通过 show() 重新显示

行为

仅隐藏窗口,不触发 closeEvent,不设置结果码。
对象保持活跃状态,可重复调用 show() 显示。

对比总结
方法 适用场景 结果码 窗口状态 对象生命周期
accept() 模态对话框确认操作 Accepted 隐藏 保持存在(默认)
reject() 模态对话框取消操作 Rejected 隐藏 保持存在(默认)
hide() 非模态对话框 无 隐藏 保持存在

代码示例

模态对话框(使用 accept()/reject())

// 模态对话框的确认和取消逻辑
void SettingsDialog::on_btnOK_clicked() {// 保存设置...accept(); // 关闭并返回 Accepted
}void SettingsDialog::on_btnCancel_clicked() {reject(); // 关闭并返回 Rejected
}// 主窗口调用
void MainWindow::onOpenSettings() {SettingsDialog dialog(this);if (dialog.exec() == QDialog::Accepted) {// 处理确认后的数据}
}

非模态对话框(使用 hide())

// 非模态对话框的确认逻辑
void SettingsDialog::on_btnOK_clicked() {// 发射信号传递数据emit settingsApplied(enable, mode);hide(); // 隐藏窗口,保持对象存在
}// 主窗口调用
void MainWindow::onOpenSettings() {if (!m_settingsDialog) {m_settingsDialog = new SettingsDialog(this);connect(m_settingsDialog, &SettingsDialog::settingsApplied, this, &MainWindow::onSettingsConfirmed);}m_settingsDialog->show(); // 显示窗口
}

注意事项

对象生命周期若对话框设置为 Qt::WA_DeleteOnClose,调用 accept() 或 reject() 会销毁对象。非模态对话框应避免设置此属性,以重复使用实例。信号与槽
非模态对话框应通过信号传递数据,而非依赖返回值:
connect(m_settingsDialog, &SettingsDialog::settingsApplied, this, &MainWindow::updateSettings);

窗口关闭确认
可在 closeEvent 中统一处理关闭逻辑:

void SettingsDialog::closeEvent(QCloseEvent *event) {if (needConfirmClose) {QMessageBox::question(...); // 弹出确认对话框}event->accept(); // 或 event->ignore()
}

通过合理选择 accept()、reject() 和 hide(),可以精确控制对话框的交互逻辑,确保用户体验和代码健壮性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/79943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何查看电脑IP地址和归属地:全面指南

在数字化时代,了解自己电脑的IP地址和归属地信息变得越来越重要。无论是进行网络故障排查、远程办公设置,还是出于网络安全考虑,掌握这些基本信息都很有必要。本文将详细介绍如何查看电脑的公网IP、内网IP以及归属地信息,并提供常…

基于python生成taskc语言文件--时间片轮询

目录 前言 utf-8 chinese GB2312 utf-8 排除task.c chinese GB2312 排除task.c 运行结果 前言 建议是把能正常工作的单个功能函数放到一起(就和放while函数里的程序一样),程序会按顺序自动配置。 不同的格式已经对应给出。 utf-8 impo…

Docker手动重构Nginx镜像,融入Lua、Redis功能

核心内容:Docker重构Nginx镜像,融入Lua、Redis功能 文章目录 前言一、准备工作1、说明2、下载模块3、Nginx配置文件3、Dockerfile配置文件3、准备工作全部结束 二、构建镜像三、基于镜像创建容器三、lua脚本的redis功能使用总结 前言 ⁣⁣⁣⁣ ⁣⁣⁣⁣…

DeepSeek+Excel:解锁办公效率新高度

目录 一、引言:Excel 遇上 DeepSeek二、认识 DeepSeek:大模型中的得力助手2.1 DeepSeek 的技术架构与原理2.2 DeepSeek 在办公场景中的独特优势 三、DeepSeek 与 Excel 结合的准备工作3.1 获取 DeepSeek API Key3.2 配置 Excel 环境 四、DeepSeekExcel 实…

解决Vue2------You may use special comments to disable some warnings.问题

问题截图 解决办法 打开项目中.eslintrc.js在rules中,添加以下代码,并extends的 vue/standard注释掉 space-before-function-paren: 0, semi: off, quotes : off, comma-dangle : off, vue/comment-directive: off

数据集-目标检测系列- 牙刷 检测数据集 toothbrush >> DataBall

数据集-目标检测系列- 牙刷 检测数据集 toothbrush >> DataBall DataBall 助力快速掌握数据集的信息和使用方式。 贵在坚持! * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/over…

解决:前后端跨域请求

目录 关于跨域请求出现的原因 同源策略 示例(跨域问题) 如何解决跨域请求 方法一:配置后端服务器以允许跨域请求(后端) 方法二:使用代理服务器(前端) 一 ,使用aja…

AI内容检测的技术优势与应用场景

随着互联网的普及和数字内容的爆发式增长,文本、图片、音频、视频等多样化内容已成为信息传播的主要载体。然而,伴随内容增长的是违法违规信息的泛滥,如涉黄、涉政、虚假广告、恶意引流等,不仅威胁用户体验,还对平台合…

DockerDesktop替换方案

背景 由于DockerDesktop并非开源软件,如果在公司使用,可能就有一些限制,那是不是除了使用DockerDesktop外,就没其它办法了呢,现在咱们来说说替换方案。 WSL WSL是什么,可自行百度,这里引用WS…

『Linux_网络』 基于状态机的Connect断线重连

客户端会面临服务器崩溃的情况, 我们可以试着写一个客户端重连的代码, 模拟并理 解一些客户端行为, 比如游戏客户端等。 客户端部分,我们本次采用状态机的设计模式实现 下面是关于状态机模式的介绍 状态机模式 状态机模式&…

5月6日日记

一点心得是 看通知要仔细认真,自己想问的问题要先看看通知或者文件中说了没有,如果没说再去问相关负责人。 上课的教室一定要看好,看准了再去。别像今天一样先去了科技楼又去了工学馆。 线代开课了。感觉总体还行,并不是很难。…

【算法专题十】哈希表

文章目录 0.哈希表简介1. 两数之和1.1 题目1.2 思路1.3 代码 2.判断是否为字符重排2.1 题目2.2 思路2.3 代码 3. leetcode.217.存在重复元素3.1 题目3.2 思路3.3 代码 4. leetcode.219.存在重复的元素Ⅱ4.1 题目4.2 思路4.3 代码 5. leetcode.49.字母异位词分组5.1 题目5.2 思路…

【前缀和】矩阵区域和

文章目录 1314. 矩阵区域和解题思路1314. 矩阵区域和 1314. 矩阵区域和 ​ 给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和: i - k <= r <= i + k, j - k <= c <= j + k …

MyBatis的SQL映射文件中,`#`和`$`符号的区别

在MyBatis的SQL映射文件中,#和$符号用于处理SQL语句中的参数替换,但它们的工作方式和使用场景有所不同。 #{} 符号 预编译参数:#{} 被用来作为预编译SQL语句的占位符。这意味着MyBatis会将你传入的参数设置为PreparedStatement的参数,从而防止SQL注入攻击,并允许MyBatis对…

Linux中为某个进程临时指定tmp目录

起因&#xff1a; 在linux下编译k8s&#xff0c;由于编译的中间文件太多而系统的/tmp分区设置太小&#xff0c;导致编译失败&#xff0c;但自己不想或不能更改/tmp分区大小&#xff0c;所以只能通过其他方式解决。 现象&#xff1a; tmp分区大小&#xff1a; 解决方法&#x…

Tomcat中Web应用程序停止时为了防止内存泄漏,JDBC驱动程序被强制取消注册出现原因

1.问题描述 本地Windows环境开发的Springboot项目同样的mysql版本&#xff0c;jdk版本&#xff0c;tomcat版本&#xff0c;本地运行没有任何问题&#xff0c;发布到阿里云服务器上时报以下问题&#xff1a; 06-May-2025 20:06:12.842 警告 [main] org.apache.catalina.loader…

主流国产大模型(以华为盘古大模型和腾讯混元大模型为例)API调用接口的具体参数和使用方法,包括Python和C++的示例代码

以下是主流国产大模型&#xff08;以华为盘古大模型和腾讯混元大模型为例&#xff09;API调用接口的具体参数和使用方法&#xff0c;包括Python和C的示例代码。 华为盘古大模型 API参数&#xff1a; - model&#xff1a;模型名称&#xff0c;如pangu-nlp-large。 - messages&…

高效调用京东 API 实战:商品详情页实时数据采集接口开发指南​

在当今数字化商业环境中&#xff0c;电商数据的实时获取与分析对于企业的决策制定和市场竞争力提升至关重要。京东作为国内领先的电商平台&#xff0c;提供了丰富的 API 接口&#xff0c;允许开发者高效地获取商品详情页的实时数据。本文将详细介绍如何通过实战开发&#xff0c…

MFC自定义控件开发与使用指南

MFC自定义控件开发与使用指南 自定义控件、双缓冲 1. 概述 MFC(Microsoft Foundation Classes)框架提供了丰富的内置控件,但在实际开发中,我们常常需要创建自定义控件来满足特定的界面需求。本文将详细介绍如何在MFC中开发自定义控件,并以CCustomTextControl为例,展示自…

第100+40步 ChatGPT学习:R语言实现多轮建模

回顾一下什么叫多轮建模&#xff1a; 要综合判断一个模型好不好&#xff0c;一次随机抽样是不行的&#xff0c;得多次抽样建模&#xff0c;看看整体的性能如何才行&#xff08;特别是对于这种小训练集&#xff09;。 所以我的思路是&#xff0c;随机抽取训练集和验证集2000次…