【Qt学习】| QDialog

  1. Qt对话框窗口的基类,由QWidget派生
  2. 独立的窗口,不能内嵌
    QDialog帮助文档介绍如下:
A dialog is always a top-level widget, but if it has a parent, its default location is centered on top of the parent. 
It will also share the parent's taskbar entry.

如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父窗口的子对话框,并默认出现在父窗口的中心位置。
顶层窗口与非顶层窗口的区别在于,顶层窗口在任务栏会有自己的位置,而非顶层窗口则会共享其父窗口的位置。
(1)指定父对象时

    MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)//指针实例化
{
    ui->setupUi(this);
    //创建对话框窗口,并指定父对象
    TestDialog* dlg = new TestDialog(this);
    //非模态
    dlg->show();
}

显示结果为:
在这里插入图片描述
当关闭主窗口时,对话框随之关闭。
(2)不指定父对象时

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)//指针实例化
{
    ui->setupUi(this);
    //创建对话框窗口,不指定父对象
    TestDialog* dlg = new TestDialog;
    //非模态
    dlg->show();
}

显示结果为:
在这里插入图片描述
运行后的结果为,对话框在主窗口的下层,需要把主窗口移走才能看到。
当关闭主窗口时,对话框依然存在。

  1. 有两种显示方式:模态和非模态
    (1)模态对话框
    模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。
    简单来说,焦点只能在当前窗口,不能切换到其他窗口
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)//指针实例化
{
    ui->setupUi(this);
    //创建对话框窗口
    TestDialog* dlg = new TestDialog(this);
    //模态,exec()
    //阻塞程序的执行
    dlg->exec();
}

在这个例子中,对话框窗口的创建在主窗口的构造函数中,运行后会先显示对话框,当对话框关闭时才会显示主窗口。这是因为dlg->exec();会阻塞程序的执行。
(2)非模态对话框
非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。
简单来说,焦点可以在窗口之间进行切换,一般查找替换窗口为非模态窗口。

    //创建对话框窗口
    TestDialog* dlg = new TestDialog(this);
    //非模态
    dlg->show();

qt基础知识持续学习中,我们一起学习吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值