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

QT的exec函数

在Qt框架中,exec()方法是QDialog类(及其子类)的一个成员函数,用于以模态(modal)方式显示对话框。当exec()被调用时,它会启动一个局部的事件循环,这个循环会阻塞对对话框之外的其他窗口的访问,直到对话框被关闭。

exec()方法的返回类型通常是intQDialog::DialogCode(后者是一个枚举类型,提供了标准对话框结果的预定义值,如QDialog::AcceptedQDialog::Rejected)。返回的值通常用于指示对话框是如何被关闭的,例如用户点击了哪个按钮。

点击按钮打开新窗口 

void Widget::on_btnOpen_clicked(){SetDialog dlg;dlg.exec();
}

错误写法:窗口一闪而过

void Widget::on_btnOpen_clicked(){SetDialog dlg;dlg.show();//dlg.exec();
}

在Qt框架中,对话框的显示方式通常有两种:模态(modal)和非模态(non-modal)。这两种方式的区别在于用户与对话框之外的其他窗口的交互能力。

  1. 模态对话框
    当使用exec()方法显示对话框时,它会以模态方式运行。这意味着在对话框关闭之前,用户不能与对话框之外的其他窗口进行交互。exec()方法会启动一个局部的事件循环,直到对话框被关闭,这个循环才会结束。因此,exec()是阻塞的,它会暂停代码的执行,直到对话框关闭。

  2. 非模态对话框
    当使用show()方法显示对话框时,它会以非模态方式运行。这意味着对话框显示后,用户仍然可以与对话框之外的其他窗口进行交互。show()方法不会启动新的事件循环,也不会阻塞代码的执行。因此,对话框的显示是即时的,而代码的执行会继续进行。

当你调用dlg.show()时,对话框会以非模态方式显示,用户可以与对话框和其他窗口进行交互。

如果你注释掉// dlg.exec();这一行,那么对话框将以非模态方式继续运行,这是符合预期的。但是,如果你取消注释并调用dlg.exec();,那么对话框会首先以非模态方式显示(因为show()已经被调用),然后exec()会尝试以模态方式运行对话框。这通常会导致一些不期望的行为,因为对话框已经显示了一次,而且exec()会再次进入事件循环等待对话框关闭。

http://www.lryc.cn/news/494270.html

相关文章:

  • Css—实现3D导航栏
  • 树莓集团:以人工智能为核心,打造数字化生态运营新典范
  • 2024年首届数证杯 初赛wp
  • 2017 NHOI小学(C++)
  • 【一维DP】【三种解法】力扣983. 最低票价
  • 【头歌实训:递归实现斐波那契数列】
  • IntelliJ IDEA配置(mac版本)
  • CSAPP Cache Lab(缓存模拟器)
  • 【机器学习】机器学习的基本分类-监督学习-逻辑回归-对数似然损失函数(Log-Likelihood Loss Function)
  • 51c自动驾驶~合集35
  • 网络安全体系与网络安全模型
  • antd table 自定义表头过滤表格内容
  • Elasticsearch实战:从搜索到数据分析的全面应用指南
  • BEPUphysicsint定点数3D物理引擎介绍
  • 宠物领养平台构建:SpringBoot技术路线图
  • 解决Flink读取kafka主题数据无报错无数据打印的重大发现(问题已解决)
  • python自动化测开面试题汇总(持续更新)
  • 1-1 Gerrit实用指南
  • docker如何安装redis
  • 省级新质生产力数据(蔡湘杰版本)2012-2022年
  • 【游资悟道】-作手新一悟道心法
  • Diffusion中的Unet (DIMP)
  • 编译以前项目更改在x64下面时报错:函数“PVOID GetCurrentFiber(void)”已有主体
  • 【AIGC】大模型面试高频考点-数据清洗篇
  • 当测试时间与测试资源有限时,你会如何优化测试策略?
  • 基于R语言森林生态系统结构、功能与稳定性分析与可视化
  • 如何使用 Python 实现插件式架构
  • 【北京迅为】iTOP-4412全能版使用手册-第二十章 搭建和测试NFS服务器
  • 【纯原生js】原生实现h5落地页面中的单选组件按钮及功能
  • 深入浅出:开发者如何快速上手Web3生态系统