对话框几种调用方式

随便新建一个主窗体

对话框几种调用方式

 

 再随便建一个对话框dialog

对话框几种调用方式

 

 

接下来在主函数中调用dialog

第一种:

#include "widget.h"
#include "dialog.h"
#include <QDebug>

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    Dialog d;
    
    d.exec();

    qDebug()<<"看看走到了这里没有";

    return a.exec();
}

 

d.exec();

阻塞窗体,也阻塞代码,除非你点击确定或取消离开了dialog的界面,否则主窗体会一直阻塞

 

第二种:

#include "widget.h"
#include "dialog.h"
#include <QDebug>

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    Dialog d;


    d.show();

    qDebug()<<"看看走到了这里没有";

    return a.exec();
}

 

d.show(); 

不阻塞窗体,也不会阻塞代码,即便不关闭这个dialog 后面原本程序内容也可以正常运行。

 

第三种:

#include "widget.h"
#include "dialog.h"
#include <QDebug>

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    Dialog d;

    //模态
    d.setModal(true);
    d.show();

    qDebug()<<"看看走到了这里没有";

    return a.exec();
}

 

在调用dialog之前,先将其转为模态,不阻塞代码,但是阻塞窗体

如果设置为false,就是默认状态,和第二种情况相同。

 

 

可以调用accept()函数,结束exec()

先做一个简单的登陆界面

对话框几种调用方式

 

 然后给两个 push button 写上槽函数

void Dialog::on_pushButton_clicked()
{
    QString a = ui->lineEdit->text();
    QString b = ui->lineEdit_2->text();
    if(a == b)
    {
        accept();
    }
}

void Dialog::on_pushButton_2_clicked()
{
    close();
}

这里简单的写成当账号密码相等时登陆验证成功

 

接着再主函数中先创建窗体,这里对话框选择第一种,阻塞窗体也阻塞代码,这样再密码输入错误的时候就无法进入主窗体界面

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    Dialog d;


    if(d.exec() == QDialog::Rejected)
    {
        return 0;
    }

    Widget w;
    w.show();

    qDebug()<<"看看走到了这里没有";

    return a.exec();
}

 

上一篇:Linux编程 int main()介绍及实现cp命令


下一篇:操作系统的坑(更新)