Qt模态和非模态对话框

所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗***互。
这连个概念并不是Qt独有的,MFC也有,可以参考此文。【MFC模态和非模态对话框】

1. 非模态对话框

  QDialog* dlg = new QDialog(this);
    dlg->show();

说明:QDialog* dlg 定义了一个指向QDialog类对象的指针变量

2. 模态对话框

方法1

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

方法2

 QDialog* dlg = new QDialog(this);
    dlg.exec();

实战演练


建立Dialog项目,在dialog.h中添加

public  slots:
void modalfun();
void modelessfun();

dialog.cpp如下:

#include "dialog.h"
#include "ui_dialog.h"
#include<ctime>
#include<cstdlib>
#include<QDebug>
Dialog::Dialog(QWidget *parent) ://初始化列表;单继承的模式
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);//表示为现在这个类所代表的对话框创建界面
    connect(ui->Modalbtn, &QPushButton::clicked, this, &Dialog::modalfun);
    connect(ui->Modelessbtn, &QPushButton::clicked, this, &Dialog::modelessfun);

}

Dialog::~Dialog()
{
    delete ui;
}
//模态对话框
void Dialog::modalfun()
{
    QDialog* dlg = new QDialog(this);
    dlg->setModal(true);
    dlg->show();

}
//非模态对话框
void Dialog::modelessfun()
{
    QDialog* dlg = new QDialog(this);
    dlg->show();
}

全部评论

相关推荐

kyw_:接好运
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务