创建模态框和非模态框

ops/2025/2/6 6:15:28/

主要的精简代码就这些

#include <QDialog>// 创建模态框
QDialog dialog(this);
// 添加各种部件
// ...
// 因为创建在栈上面,所以需要阻止程序继续运行
dialog.exec();// 非模态框
QDialog dialog = new Dialog(this);
// 添加各种部件
// ...
dialog.show();

创建模态对话框

模态对话框通常通过调用 exec() 方法来显示,它会阻塞代码的执行,直到对话框关闭。

#include <QApplication>
#include <QDialog>
#include <QPushButton>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建主窗口QWidget mainWindow;mainWindow.setWindowTitle("主窗口");mainWindow.resize(300, 200);// 创建一个按钮,点击后弹出模态对话框QPushButton modalButton("打开模态对话框", &mainWindow);modalButton.move(50, 50);// 创建模态对话框QDialog modalDialog(&mainWindow);modalDialog.setWindowTitle("模态对话框");// 设置模态对话框的属性modalDialog.setModal(true); // 确保对话框是模态的// 连接按钮的点击信号到槽函数,显示模态对话框QObject::connect(&modalButton, &QPushButton::clicked, [&]() {modalDialog.exec(); // 使用exec()显示模态对话框});mainWindow.show();return app.exec();
}

创建非模态对话框

非模态对话框通常通过调用 show() 方法来显示,它不会阻塞代码的执行,用户可以在对话框和父窗口之间自由切换。

#include <QApplication>
#include <QDialog>
#include <QPushButton>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建主窗口QWidget mainWindow;mainWindow.setWindowTitle("主窗口");mainWindow.resize(300, 200);// 创建一个按钮,点击后弹出非模态对话框QPushButton modelessButton("打开非模态对话框", &mainWindow);modelessButton.move(50, 100);// 创建非模态对话框QDialog modelessDialog(&mainWindow);modelessDialog.setWindowTitle("非模态对话框");// 设置非模态对话框的属性modelessDialog.setModal(false); // 确保对话框是非模态的// 连接按钮的点击信号到槽函数,显示非模态对话框QObject::connect(&modelessButton, &QPushButton::clicked, [&]() {modelessDialog.show(); // 使用show()显示非模态对话框});mainWindow.show();return app.exec();
}

总结

模态对话框:使用 exec() 方法显示,会阻塞用户与父窗口的交互,直到对话框关闭。
非模态对话框:使用 show() 方法显示,不会阻塞用户与父窗口的交互,用户可以在对话框和父窗口之间自由切换。


http://www.ppmy.cn/ops/156073.html

相关文章

【25考研】南开软件考研复试复习重点!

一、复试内容 复试采取现场复试的方式。复试分为笔试、机试和面试三部分。三部分合计100分&#xff0c;其中笔试成绩占30%、机试成绩占30%、面试成绩占40%。 1.笔试&#xff1a;专业综合基础测试 考核方式&#xff1a;闭卷考试&#xff0c;时长为90分钟。 笔试考查内容范围…

996引擎-怪物:Lua 刷怪+清怪+自动拾取

996引擎-怪物:Lua 刷怪+清怪+自动拾取 文件位置NPC脚本参考资料文件位置 文件位置服务端D:\996M2-lua\MirServer-lua\Mir200客户端D:\996M2-lua\996M2_debug\devNPC脚本 服务端\Mir200\Envir\Market_Def\test\test爆率-3.lua -- NPC入口函数 function main(player)-- 获取玩…

RTMP 和 WebRTC

WebRTC(Web Real-Time Communication)和 RTMP(Real-Time Messaging Protocol)是两种完全不同的流媒体协议,设计目标、协议栈、交互流程和应用场景均有显著差异。以下是两者的详细对比,涵盖协议字段、交互流程及核心设计思想。 一、协议栈与设计目标对比 特性RTMPWebRTC传…

2.5寒假作业

web&#xff1a;[HNCTF 2022 Week1]easy_html 打开环境提示饼干里面有什么&#xff0c;就是cookie cookie是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可…

数仓ETL测试

提取&#xff0c;转换和加载有助于组织使数据在不同的数据系统中可访问&#xff0c;有意义且可用。ETL工具是用于提取&#xff0c;转换和加载数据的软件。在当今数据驱动的世界中&#xff0c;无论大小如何&#xff0c;都会从各种组织&#xff0c;机器和小工具中生成大量数据。 …

[x86 ubuntu22.04]进入S4失败

目录 1 问题描述 2 解决过程 2.1 查看内核日志 2.2 新建一个交换分区 2.3 指定交换分区的位置 1 问题描述 CPU&#xff1a;G6900E OS&#xff1a;ubuntu22.04 Kernel&#xff1a;6.8.0-49-generic 使用“echo disk > /sys/power/state”命令进入 S4&#xff0c;但是无法…

Python实现CAN FD 通信(基于PCAN开发CAN FD测试工具)

目录 一.背景 二. 硬件环境 1.CAN通信设备之PCAN 2.物理架构图 三. 资料分析 四. 二次开发 五. 应用 六. 总结 一.背景 在汽车电子领域中CAN是一种被广泛应用的通信协议,CAN 是controller area network 的缩写(以下称为can),是iso国际标准化的串行通信协议。 关于…

【大模型LLM面试合集】大语言模型架构_MHA_MQA_GQA

MHA_MQA_GQA 1.总结 在 MHA&#xff08;Multi Head Attention&#xff09; 中&#xff0c;每个头有自己单独的 key-value 对&#xff1b;标准的多头注意力机制&#xff0c;h个Query、Key 和 Value 矩阵。在 MQA&#xff08;Multi Query Attention&#xff09; 中只会有一组 k…