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

QDialog中的不同模式

在QDialog中,有几种不同的模式可供选择,决定了对话框的行为和用户交互方式。

1.模态对话框(Modal Dialog)

使用setModal(true)或exec()方法显示的对话框。模态对话框会阻止用户与其他窗口进行交互,直到对话框被关闭。这通常用于要求用户完成某项操作后才能继续。用户必须关闭对话框才能继续与主窗口交互。
void MainWindow::on_pushButton_clicked()
{MyDialog dialog;dialog.setModal(true); // 设置对话框为模态dialog.exec();        // 以模态方式显示对话框
}

2.非模态对话框(Modeless Dialog)

使用show()方法显示的对话框。非模态对话框不会阻止用户与其他窗口进行交互,用户可以同时处理多个窗口。
void MainWindow::on_pushButton_clicked()
{MyDialog *dialog = new MyDialog;dialog->setWindowModality(Qt::NonModal);dialog->show(); // 显示非模态对话框,不阻止用户与其他窗口交互
}

其中模态对话框

不同模态模式可以通过 setWindowModality() 方法进行设置

a.应用程序模态(Application Modal)

调用setWindowModality(Qt::ApplicationModal)方法设置对话框为应用程序模态。此模式下,对话框会阻止用户与整个应用程序中的其他窗口进行交互,但允许切换到其他应用程序。
void MainWindow::on_pushButton_clicked()
{MyDialog dialog(this);dialog->setWindowModality(Qt::ApplicationModal);dialog.setModal(true); // 设置对话框为模态dialog.exec();        // 以模态方式显示对话框,它会阻止用户与应用程序中的所有窗口进行交互,直到对话框被关闭
}

b.窗口模态(Window Modal)

调用setWindowModality(Qt::WindowModal)方法设置对话框为窗口模态。在这种模式下,对话框只阻止用户与它所在的父窗口进行交互,而不是整个应用程序。
void MainWindow::on_pushButton_clicked()
{WindowModalDialog *dialog = new WindowModalDialog(this);dialog->setWindowModality(Qt::WindowModal); // 设置对话框为窗口模态dialog->exec(); // 使用 exec() 显示对话框,允许用户与主窗口中的其他部分交互,但阻止用户与主窗口的其他窗口交互
}

坚持信念,不仅要自己熟悉和会用,更要分享出来让大家会用!

更重要的是能力有限,诚邀大家补充,互相学习!


http://www.mrgr.cn/news/9935.html

相关文章:

  • 5 分钟 Stable Diffusion 本地安装指南
  • 学习记录——day35 数据库 sqlite3
  • 浅谈网络安全模型——PPDR模型
  • leetcode 数组+哈希+双指针+子串+滑动窗口
  • 开发团队如何应对突发的技术故障和危机?快速响应与问题定位策略
  • 《机器学习》决策树 C4.5算法、cart算法
  • 笔记整理—uboot启动过程(6)env_init与init_sequence总结
  • 计算机基础知识复习8.21
  • MySQL——多表操作(一)外键(1)什么是外键
  • 【Oracle问题】ORA-12516:监听程序找不到符合协议堆栈要求的可用处理程序问题处理
  • Windows-Server-2016/2019绕过WindowsDefender
  • 多维度对比社保与个人养老金,个养要不要买?其实社保也是自己买的
  • 文件批量重命名【JAVA】【正则表达式】
  • 餐饮商标怎么注册自己的品牌!
  • 苹果微信误删了聊天记录怎么恢复?4个方法,几分钟就能恢复
  • ICCV2023:Co-DETR:DETRs与协同混分配训练
  • 手撕顺序表
  • AWS EC2的独特优势,让云计算更简单高效!
  • http的host字段
  • Yolo环境搭建(深度学习基础环境)