您的位置:首页 > 财经 > 产业 > [Qt][对话框][上]详细讲解

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

2024/11/16 13:43:01 来源:https://blog.csdn.net/qq_37281656/article/details/141160684  浏览:    关键词:[Qt][对话框][上]详细讲解

目录

  • 0.是什么?
  • 1.对话框的分类
  • 2.混合属性对话框


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();
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com