[Qt][对话框][上]详细讲解

embedded/2024/11/15 4:34:04/

目录


0.是什么?

  • ⼀些不适合在主窗⼝实现的功能组件可以设置在对话框
  • 对话框通常是⼀个顶层窗⼝,出现在程序最上层,⽤于实现短期任务或者简洁的⽤⼾交互
  • Qt中使用QDialog类表示对话框,该类继承自QWidget
    • QWidget的各种属性方法,QDialog也能使用
  • 每次弹出一个QDialog,都是新创建的一个新的QDialog
    • 要考虑内存泄漏问题

1.对话框的分类

  • 模态对话框
    • 显⽰后⽆法与⽗窗⼝进⾏交互,是⼀种阻塞式的对话框
    • 使⽤QDialog::exec()调⽤
    • 模态对话框适⽤于必须依赖⽤⼾选择的场合,⽐如消息显⽰,⽂件选择,打印设置等
    QDialog dlg(this);
    dlg.resize(299, 100);
    dlg.exec();
    
  • 非模态对话框
    • 显⽰后独⽴存在,可以同时与⽗窗⼝进⾏交互,是⼀种⾮阻塞式对话框
    • 使⽤QDialog::show()调⽤
    • ⾮模态对话框⼀般在堆上创建
      • 因为如果创建在栈上时,弹出的⾮模态对话框就会⼀闪⽽过
      • 同时还需要设置Qt:WA_DeleteOnClose属性,在关闭时,自动进行delete
        • ⽬的:当创建多个⾮模态对话框时(如打开了多个⾮模态窗⼝),为了避免内存泄漏要设置此属性
        • 模态对话框也可以设置,其作用就是在对话框关闭后自动delete
    • ⾮模态对话框适⽤于特殊功能设置的场合,⽐如查找操作,属性设置等
    // 非模态对话框,为了防止一闪而过,创建在堆区
    QDialog* dlg = new QDialog(this);
    dlg->resize(200, 100);// 当dlg无限创建时(即一直不断的打开关闭窗口)
    // 设置以下属性即可在关闭非模态对话框时释放这个对象
    dlg->setAttribute(Qt::WA_DeleteOnClose);dlg->show();
    

2.混合属性对话框

  • 混合属性对话框同时具有模态对话框和⾮模态对话框的属性
  • 使⽤QDialog::setModal()可以创建混合特性的对话框
    QDialog* dialog = new QDialog(this);
    dialog->setAttribute(Qt::WA_DeleteOnClose);
    dialog->setModal(true); // 设置混合特性的对话框
    dialog->resize(200, 100);
    dialog->show();
    


http://www.ppmy.cn/embedded/96609.html

相关文章

Unity脚本一键修改所有预制体

需求 预制体中的Text组件默认是使用Unity的内置字体Arial。 但是在Unity2022之后,Text组件就被弃用了,内置字体Arial也移除了。 如果项目从2022之前的版本升到2022,那么Text组件的字体文件会自动改为LegacyRuntime.ttf文件。 其中LegacyR…

关于鸿蒙开发中装饰器@Extend、@Styles、@Builder的介绍

总结 名称适合是否可以参数Extend抽取 特定组件 样式、事件√Styles抽取 公共 样式、事件Builder抽取 结构、样式、事件√ Extend 语法: Extend(要扩展的组件,例如Text、Column、Row等) function functionName { ... } 使用规则: 1、Ex…

使用API有效率地管理Dynadot域名,对拍卖的域名进行出价

前言 Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮箱&…

【C++】什么是模板?

有不懂的地方可以翻阅我之前文章! 个人主页:CSDN_小八哥向前冲 所属专栏:CSDN_C入门 目录 模板函数 泛型编程 函数模板 类模板 模板函数 泛型编程 在之前的学习里,我们知道函数可以重载,当我们在实现多参数函数交…

MySQL 简介

一、MySQL 概述 1.1 什么是 MySQL? MySQL 是全球最受欢迎的开源关系型数据库管理系统(RDBMS)之一,由瑞典的 MySQL AB 公司开发,后被 Sun Microsystems 收购,最终于 2010 年被 Oracle 公司收购。MySQL 使用…

微信小程序--24(列表渲染)

一、wx&#xff1a;for 1.作用 根据指定数组&#xff0c;循环渲染重复的组件结构 2.语法 <view wx:for"{{data中的数据}}"> 索引是&#xff1a;{{index}}, item项是&#xff1a;{{item}}</view> index:表索引item&#xff1a;表当前循环项 …

C++ | Leetcode C++题解之第338题比特位计数

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> countBits(int n) {vector<int> bits(n 1);for (int i 1; i < n; i) {bits[i] bits[i & (i - 1)] 1;}return bits;} };

政务大数据解决方案(九)

政务大数据解决方案旨在通过构建高效的数据处理与分析系统&#xff0c;全面整合政府各部门数据资源&#xff0c;运用尖端技术进行深入挖掘与智能分析&#xff0c;为政府决策提供科学、精准的数据支撑&#xff0c;优化政策制定与执行流程&#xff0c;同时通过加强数据安全与隐私…