qt之一个登陆dialog界面

在Qt design下,先设计下界面

分别把伙伴关系、信号/槽关系、响应函数设计出来:

qt之一个登陆dialog界面_第1张图片 qt之一个登陆dialog界面_第2张图片          

接下来编写代码:

//dialog.h
#ifndef DIALOG_H
#define DIALOG_H

#include <QtWidgets/QMainWindow>
#include "ui_dialog.h"
#include <QMessageBox>

class Dialog : public QMainWindow
{
	Q_OBJECT

private slots:
	void enableLoginButton( const QString &);
	void login();

public:
	Dialog(QWidget *parent = 0);
	~Dialog();

private:
	Ui::DialogClass ui;
	
};

#endif // DIALOG_H


//dialog.cpp
#include "dialog.h"


Dialog::Dialog(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	
	

}

Dialog::~Dialog()
{

}

void Dialog::enableLoginButton(const QString & text)
{
	ui.loginButton->setEnabled(!text.isEmpty());
}

void Dialog::login()
{
	QString userName = ui.userNamerLEdit->text();
	QString passWord = ui.passWordLEdit->text();
	if ("888888" == userName )
	{
		if( "888888" == passWord)
		{
			QMessageBox::information(this, tr("Congratulation"), tr("welcome!"));
		}
		else
		{
			QMessageBox::information(this, tr("warning"), tr("password invalide"));

		}
	}
	else
	{
		QMessageBox::information(this, tr("warning"), tr("this user is not"));
	}

}

//main.cpp
#include "dialog.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	Dialog w;
	w.show();
	return a.exec();
}

下面是qt design自动生成的界面代码:

也就是ui_dialog.h

/********************************************************************************
** Form generated from reading UI file 'dialog.ui'
**
** Created by: Qt User Interface Compiler version 5.1.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_DIALOG_H
#define UI_DIALOG_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_DialogClass
{
public:
    QWidget *centralWidget;
    QWidget *layoutWidget;
    QGridLayout *gridLayout;
    QLabel *label1;
    QLineEdit *userNamerLEdit;
    QPushButton *loginButton;
    QLabel *label2;
    QLineEdit *passWordLEdit;
    QPushButton *clearButton;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *DialogClass)
    {
        if (DialogClass->objectName().isEmpty())
            DialogClass->setObjectName(QStringLiteral("DialogClass"));
        DialogClass->setEnabled(true);
        DialogClass->resize(591, 353);
        centralWidget = new QWidget(DialogClass);
        centralWidget->setObjectName(QStringLiteral("centralWidget"));
        layoutWidget = new QWidget(centralWidget);
        layoutWidget->setObjectName(QStringLiteral("layoutWidget"));
        layoutWidget->setGeometry(QRect(70, 70, 381, 111));
        gridLayout = new QGridLayout(layoutWidget);
        gridLayout->setSpacing(6);
        gridLayout->setContentsMargins(11, 11, 11, 11);
        gridLayout->setObjectName(QStringLiteral("gridLayout"));
        gridLayout->setContentsMargins(0, 0, 0, 0);
        label1 = new QLabel(layoutWidget);
        label1->setObjectName(QStringLiteral("label1"));

        gridLayout->addWidget(label1, 0, 0, 1, 1);

        userNamerLEdit = new QLineEdit(layoutWidget);
        userNamerLEdit->setObjectName(QStringLiteral("userNamerLEdit"));

        gridLayout->addWidget(userNamerLEdit, 0, 1, 1, 1);

        loginButton = new QPushButton(layoutWidget);
        loginButton->setObjectName(QStringLiteral("loginButton"));
        loginButton->setEnabled(false);
        loginButton->setDefault(true);

        gridLayout->addWidget(loginButton, 0, 2, 1, 1);

        label2 = new QLabel(layoutWidget);
        label2->setObjectName(QStringLiteral("label2"));

        gridLayout->addWidget(label2, 1, 0, 1, 1);

        passWordLEdit = new QLineEdit(layoutWidget);
        passWordLEdit->setObjectName(QStringLiteral("passWordLEdit"));

        gridLayout->addWidget(passWordLEdit, 1, 1, 1, 1);

        clearButton = new QPushButton(layoutWidget);
        clearButton->setObjectName(QStringLiteral("clearButton"));

        gridLayout->addWidget(clearButton, 1, 2, 1, 1);

        DialogClass->setCentralWidget(centralWidget);
        menuBar = new QMenuBar(DialogClass);
        menuBar->setObjectName(QStringLiteral("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 591, 23));
        DialogClass->setMenuBar(menuBar);
        mainToolBar = new QToolBar(DialogClass);
        mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
        DialogClass->addToolBar(Qt::TopToolBarArea, mainToolBar);
        statusBar = new QStatusBar(DialogClass);
        statusBar->setObjectName(QStringLiteral("statusBar"));
        DialogClass->setStatusBar(statusBar);
#ifndef QT_NO_SHORTCUT
        label1->setBuddy(userNamerLEdit);
        label2->setBuddy(passWordLEdit);
#endif // QT_NO_SHORTCUT
        QWidget::setTabOrder(userNamerLEdit, passWordLEdit);
        QWidget::setTabOrder(passWordLEdit, loginButton);
        QWidget::setTabOrder(loginButton, clearButton);

        retranslateUi(DialogClass);
        QObject::connect(passWordLEdit, SIGNAL(textChanged(QString)), DialogClass, SLOT(enableLoginButton(QString)));
        QObject::connect(loginButton, SIGNAL(clicked()), DialogClass, SLOT(login()));
        QObject::connect(clearButton, SIGNAL(clicked()), passWordLEdit, SLOT(clear()));
        QObject::connect(clearButton, SIGNAL(clicked()), userNamerLEdit, SLOT(clear()));

        QMetaObject::connectSlotsByName(DialogClass);
    } // setupUi

    void retranslateUi(QMainWindow *DialogClass)
    {
        DialogClass->setWindowTitle(QApplication::translate("DialogClass", "Dialog", 0));
        label1->setText(QApplication::translate("DialogClass", "User&Name", 0));
        loginButton->setText(QApplication::translate("DialogClass", "&Login", 0));
        label2->setText(QApplication::translate("DialogClass", "&Password", 0));
        clearButton->setText(QApplication::translate("DialogClass", "&Clear", 0));
    } // retranslateUi

};

namespace Ui {
    class DialogClass: public Ui_DialogClass {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_DIALOG_H



你可能感兴趣的:(qt之一个登陆dialog界面)