ui_LoginDialog.h
//下面两句话要注销掉,否则会导致点击消息提示框退出整个程序
// QObject::connect(buttonBox, SIGNAL(accepted()), LoginDialog, SLOT(accept()));
// QObject::connect(buttonBox, SIGNAL(rejected()), LoginDialog, SLOT(reject()));
/********************************************************************************
** Form generated from reading UI file 'LoginDialog.ui'
**
** Created by: Qt User Interface Compiler version 5.4.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_LOGINDIALOG_H
#define UI_LOGINDIALOG_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QDialog>
#include <QtWidgets/QDialogButtonBox>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QVBoxLayout>
QT_BEGIN_NAMESPACE
class Ui_LoginDialog
{
public:
QVBoxLayout *verticalLayout_2;
QSpacerItem *verticalSpacer;
QVBoxLayout *verticalLayout;
QGridLayout *gridLayout;
QLabel *account_label;
QLineEdit *account_edit;
QLabel *passwordlabel;
QLineEdit *password_edit;
QHBoxLayout *horizontalLayout;
QSpacerItem *horizontalSpacer;
QDialogButtonBox *buttonBox;
QSpacerItem *horizontalSpacer_2;
QSpacerItem *verticalSpacer_2;
void setupUi(QDialog *LoginDialog)
{
if (LoginDialog->objectName().isEmpty())
LoginDialog->setObjectName(QStringLiteral("LoginDialog"));
LoginDialog->resize(593, 340);
QFont font;
font.setPointSize(20);
LoginDialog->setFont(font);
verticalLayout_2 = new QVBoxLayout(LoginDialog);
verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2"));
verticalSpacer = new QSpacerItem(20, 69, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout_2->addItem(verticalSpacer);
verticalLayout = new QVBoxLayout();
verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
gridLayout = new QGridLayout();
gridLayout->setObjectName(QStringLiteral("gridLayout"));
account_label = new QLabel(LoginDialog);
account_label->setObjectName(QStringLiteral("account_label"));
gridLayout->addWidget(account_label, 0, 0, 1, 1);
account_edit = new QLineEdit(LoginDialog);
account_edit->setObjectName(QStringLiteral("account_edit"));
gridLayout->addWidget(account_edit, 0, 1, 1, 1);
passwordlabel = new QLabel(LoginDialog);
passwordlabel->setObjectName(QStringLiteral("passwordlabel"));
gridLayout->addWidget(passwordlabel, 1, 0, 1, 1);
password_edit = new QLineEdit(LoginDialog);
password_edit->setObjectName(QStringLiteral("password_edit"));
gridLayout->addWidget(password_edit, 1, 1, 1, 1);
verticalLayout->addLayout(gridLayout);
horizontalLayout = new QHBoxLayout();
horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
horizontalLayout->addItem(horizontalSpacer);
buttonBox = new QDialogButtonBox(LoginDialog);
buttonBox->setObjectName(QStringLiteral("buttonBox"));
buttonBox->setLayoutDirection(Qt::RightToLeft);
buttonBox->setOrientation(Qt::Horizontal);
buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
horizontalLayout->addWidget(buttonBox);
horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
horizontalLayout->addItem(horizontalSpacer_2);
verticalLayout->addLayout(horizontalLayout);
verticalLayout_2->addLayout(verticalLayout);
verticalSpacer_2 = new QSpacerItem(20, 68, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout_2->addItem(verticalSpacer_2);
retranslateUi(LoginDialog);
//下面两句话要注销掉,否则会导致点击消息提示框退出整个程序
// QObject::connect(buttonBox, SIGNAL(accepted()), LoginDialog, SLOT(accept()));
// QObject::connect(buttonBox, SIGNAL(rejected()), LoginDialog, SLOT(reject()));
QMetaObject::connectSlotsByName(LoginDialog);
} // setupUi
void retranslateUi(QDialog *LoginDialog)
{
LoginDialog->setWindowTitle(QApplication::translate("LoginDialog", "Dialog", 0));
account_label->setText(QApplication::translate("LoginDialog", "\350\264\246\345\217\267\357\274\232", 0));
passwordlabel->setText(QApplication::translate("LoginDialog", "\345\257\206\347\240\201\357\274\232", 0));
} // retranslateUi
};
namespace Ui {
class LoginDialog: public Ui_LoginDialog {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_LOGINDIALOG_H
LoginDialog.h
#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H
#include <QDialog>
namespace Ui {
class LoginDialog;
}
class LoginDialog : public QDialog
{
Q_OBJECT
public:
explicit LoginDialog(QWidget *parent = 0);
~LoginDialog();
private slots:
void onAccepted(void);//处理Ok按钮的槽函数
void onRejected(void);//处理Cancel按钮的槽函数
private:
Ui::LoginDialog *ui;
};
#endif // LOGINDIALOG_H
LoginDialog.cpp
#include "LoginDialog.h"
#include "ui_LoginDialog.h"
#include <QDebug>
#include <QMessageBox>
LoginDialog::LoginDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::LoginDialog)
{
ui->setupUi(this);
connect(ui->buttonBox,SIGNAL(accepted()),this,SLOT(onAccepted()));
connect(ui->buttonBox,SIGNAL(rejected()),this,SLOT(onRejected()));
}
LoginDialog::~LoginDialog()
{
delete ui;
}
void LoginDialog::onAccepted()
{
if(ui->account_edit->text() == "username" && ui->password_edit->text() == "123456")
{
qDebug() << "login success !";
close();
}
else
{
QMessageBox msgBox(
QMessageBox::Critical,//图标
"Error",//标题
"username or password error",//提示消息
QMessageBox::Ok,//按钮
this);//父窗口
msgBox.exec();//显示消息提示框,并进入事件循环
}
}
void LoginDialog::onRejected()
{
QMessageBox msgBox(
QMessageBox::Question,//图标
"Acquire",//标题
"Cancel login ?",//提示消息
QMessageBox::Yes|QMessageBox::No,//按钮
this);//父窗口
//显示消息提示框,并进入事件循环,点击Yes或No时候都会退出事件循环
//但是返回结果不同,如果点击Yes则退出登录对话框
if(QMessageBox::Yes == msgBox.exec())
{
close();
}
}
main.cpp
#include "LoginDialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
LoginDialog w;
w.show();
return a.exec();
}