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

全部评论

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-26 15:18
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务