模式对话框

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangxiaobei2017/article/details/78068641

对话框是用来提醒用户输入,分为模式对话框和非模式对话框;
模式对话框弹出后,之前的窗口被锁定,只有关闭对话框后,才能回到之前界面;(比较常见)
非模式对话框则可以同时操作前后两个窗口;
为了演示模式对话框,首先创建两个窗口,一个为带有登陆按钮的窗口,另一个是登陆界面如图:
这里写图片描述
这里写图片描述
第一个窗口的创建很简答,之前已经学习过,通过连接PushButton的信号与槽,建立联系;
重点在第二个窗口的创建,这个也是新学到的内容,右键点击解决方案,选择添加QT类,出现如下对话框,选择GUI类,进入下一个对话框
这里写图片描述
这里写图片描述
重命名,并且把父类改为QDialog,创建完成后,解决方案中会增加新的ui以及对应的头文件和cpp文件。此时可以创建第二个对话框,并设置属性。同时建立按钮的关联。

Qt7_1A.cpp

#include "Qt7_1A.h"
#include"LoginDlg.h" // 引用LoginDlg头文件
#include<QDebug>  //  打印输出
Qt7_1A::Qt7_1A(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    // 连接登陆按钮的信号与槽
    connect(ui.btnLogin,SIGNAL(clicked()),
        this, SLOT(OnBtnLogin()));
}


int Qt7_1A::OnBtnLogin() // 点击登陆按钮后,进入当前函数
{
    // 使用对话框
    LoginDlg dlg(this);
    // 这里exce()函数要有一个返回值,要不然程序会堵塞
    int ret = dlg.exec(); // exec()函数就是执行命令,弹出对话框
    if (ret == QDialog::Accepted)
    {
        //取得用户输入
        qDebug() << dlg.m_user << dlg.m_password;

    }
    else
    {


    }
    return 0;
}

LoginDlg.cpp

#include "LoginDlg.h"

LoginDlg::LoginDlg(QWidget *parent)
    : QDialog(parent)
{
    ui.setupUi(this);

    connect(ui.BtnOK, SIGNAL(clicked()), this, SLOT(OnBtnOK()));
    connect(ui.BtnCancel, SIGNAL(clicked()), this, SLOT(OnBtnCancel()));

}

LoginDlg::~LoginDlg()
{
}

int LoginDlg::OnBtnOK()
{
    //取得用户的输入
     m_user = ui.EditUser->text();
     m_password = ui.EditPassword->text();

    accept(); // 关闭当前对话框,并使exce()函数返回Accepted
    return 0;
}
int LoginDlg::OnBtnCancel()
{

    reject();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/wangxiaobei2017/article/details/78068641