【Qt】对话框QDialog类,模态对话框和非模态对话框

这篇具有很好参考价值的文章主要介绍了【Qt】对话框QDialog类,模态对话框和非模态对话框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QDialog类是所有对话框窗口类的基类。对话框窗口是一个用来完成短小任务或和用户进行简单交互的顶层窗口按照运行对话框时是否还可以和该程序的其它窗口进行交互,将它分为两类:模态(modal)对话框和非模态(modaless)对话框。

模态对话框
先看一个例子:
创建一个带界面的程序,该程序的构造函数如下

#include "mywidget.h"
#include "ui_mywidget.h"
#include <QDialog>

MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);

    QDialog dialog(this);
    dialog.show();
    dialog.exec();
}

MyWidget::~MyWidget()
{
    delete ui;
}

其中主要的代码如下:

QDialog dialog(this);
dialog.show();   //显示对话框
dialog.exec();  //阻塞函数,不让它执行下一行,让QDialog对话框显示,直到关闭才显示MyWidget对话框

运行结果如下:
【Qt】对话框QDialog类,模态对话框和非模态对话框
然后关闭它,就会显示下一个MyWidget对话框
【Qt】对话框QDialog类,模态对话框和非模态对话框
在QDialog对话框关闭之前,不能再与同一个应用程序的其它窗口进行交互的,这个QDialog对话框就是模态对话框。
也可以使用setModal()函数设置对话框,setModal(true)设置为模态对话框,setModal(false)设置为非模态对话框,这个函数里面的参数默认是false的。

#include "mywidget.h"
#include "ui_mywidget.h"
#include <QDialog>

MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);

    QDialog *dialog = new QDialog(this);
    dialog->setModal(true);
    dialog->show();
}
MyWidget::~MyWidget()
{
    delete ui;
}

主要代码如下:

 QDialog *dialog = new QDialog(this);
 dialog->setModal(true);
 dialog->show();

这个也是把QDialog对话框设置为模态对话框的,代码运行如下:
【Qt】对话框QDialog类,模态对话框和非模态对话框
与上一个不同的是,这个是显示出两个对话框,但是只有QDialog对话框可以进行操作,MyWidget对话框不能进行操作。只有把QDialog关闭了MyWidget对话框才可以进行操作。

非模态对话框
将上述代码的第二行注释掉或把setModal()函数设置为setModal(false),如下:

 QDialog *dialog = new QDialog(this);
 //dialog->setModal(true);
 dialog->show();

运行结果如下:
【Qt】对话框QDialog类,模态对话框和非模态对话框
这次也是显示两个对话框,但是它们两个都是可以进行操作的,QDialog对话框就是非模态对话框,既可以与它交互,也可以与同一程序的其它窗口交互。

注:在关闭MyWidget对话框后,QDialog对话框也跟着关闭,因为MyWidget对话框相当于主程序,而QDialog是在MyWidget的程序的构造函数中,MyWidget关闭,构造函数自然也结束了。

这个是看《QT Creator快速入门》这本书的3.2.1,根据自己的理解写的笔记,如有错误,请大佬指正。文章来源地址https://www.toymoban.com/news/detail-446352.html

到了这里,关于【Qt】对话框QDialog类,模态对话框和非模态对话框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【pyqt5界面化工具开发-8】窗口开发-QDialog对话框

    目录 一、调用父类的菜单 二、添加更多的布局在对话框内 和前面Qwedget一样的结构(不做过多介绍) 可以参考代码中的注释 这和前面讲的Qwedget窗口布局基本上一样了 运行结果:

    2024年02月11日
    浏览(57)
  • 嵌入式Qt 对话框及其类型 QDialog

    对话框是与用户进行简短交互的顶层窗口。 QDialog是Qt中所有对话框窗口的基类。 QDialog继承与QWidfet是一种容器类型的组件。  QDialog的意义: QDialog作为一种专业的交互窗口而存在。 QDialog不能作为子部部件嵌入其他容器中。 QDialog是定制了窗口式样的特殊的QWidget。 模态对话框

    2024年04月11日
    浏览(41)
  • QT基础教程之五对话框QDialog

    对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。 Qt 中使用QDialog类实现对话框。就像主窗口一样,我们通常会设计一个

    2024年02月10日
    浏览(38)
  • QDialog实现圆角对话框的三种方式

    方式一:通过QBitMap设置控件有效绘制区域(缺点:容易产生锯齿,锯齿来自于QBitMap) Dialog继承Qdialog 设置无边框及背景透明 重写paintEvent 参考链接:https://blog.csdn.net/ajcjldd/article/details/127306630 方式二:QPainter直接绘制圆角矩形(缺点:无法使用qss方式配置背景色,需要根据主

    2024年02月06日
    浏览(48)
  • QT中在MainWindow(主窗口)中创建Dialog(对话框)两种方式优缺点对比

    新建窗口工程 利用ui工具在Window中创建三个按钮 打开对话框 关闭对话框 改变三个按钮的名称 openDialog closeDialog 在工程中添加QDialog类,名字是Dialog 在Dialog中创建label控件,写上HelloWorld 最关键的一步,在window的类中创建Dialog私有对象指针 在window.cpp中编写指针myDialog的初始化代

    2024年02月07日
    浏览(46)
  • 【flutter】完全自定义样式模态对话框

     示例完成结果展示:   示例组件代码: context :上下文 title :提示标题,null时不显示 content :提示内容,null时不显示 cancelText :取消按钮文字,null时不显示取消按钮 confirmText :确认按钮文字 页面上使用:

    2024年01月20日
    浏览(43)
  • [Winform]在Form里显示模态对话框ModalDialog

    如何在WinForm的一个 Form里面 弹出一个模态Dialog? 程序的框架是Winform,只有一个窗口MainForm。MainForm里面是一个TabControl,每个TabPage是一个Form,每个TabPage的Form相互独立,互不干扰,TabPage间可以随时切换。由于有某些需求,TabPage需要接受用户输入,并等待输入完成,才能执行后

    2024年02月04日
    浏览(72)
  • Qt对话框——QInputDialog输入对话框

    Qt对话框——QInputDialog输入对话框 在Qt开发中,我们有时需要通过一个对话框获取用户的输入,而QInputDialog就是Qt框架提供的一种方便地弹出输入对话框并获取用户输入数据的方式。 QInputDialog使用非常简单,我们可以通过访问不同的接口来弹出输入对话框获取多种类型的返回

    2024年02月12日
    浏览(51)
  • 微信小程序wx.showModal模态对话框中content换行

    解决方案:使用“rn”换行 注意:微信开发者工具上并不会换行只是会有空格,但是实际运行手机上是有换行效果的!  这是微信开发者工具的效果: 这是手机上显示的效果:          .join(\\\'\\\') 将数组用\\\"\\\"连接成为一个字符串         .slice(0, -4) 截取掉数组最后一项的

    2024年02月03日
    浏览(37)
  • Qt标准对话框:8大对话框详解

    颜色对话框类 QColorDialog 提供了一个可以获取指定颜色的对话框的对话框部件: 这里使用 QColorDialog 的静态函数 getColor () 来获取颜色,执行时弹出颜色选择对话框: 返回的是一个 QColor 类型的数据: 这四个数值分别代表:透明度(alpha)、Red、Green、Blue。它们的默认值都是

    2024年02月03日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包