模式对话框

来源:互联网 发布:崩坏3矩阵难度 编辑:程序博客网 时间:2024/06/03 22:50

对话框是用来提醒用户输入,分为模式对话框和非模式对话框;
模式对话框弹出后,之前的窗口被锁定,只有关闭对话框后,才能回到之前界面;(比较常见)
非模式对话框则可以同时操作前后两个窗口;
为了演示模式对话框,首先创建两个窗口,一个为带有登陆按钮的窗口,另一个是登陆界面如图:
这里写图片描述
这里写图片描述
第一个窗口的创建很简答,之前已经学习过,通过连接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;}
原创粉丝点击