18_登录对话框示例分析

关键词:可复用的登录对话框

1. 登录对话框需求分析

  • 可复用的软件部件
  • 获取用户名密码

附加需求:随机验证吗

2. 登录对话框的设计与架构

18_登录对话框示例分析_第1张图片

3. 登录对话框界面的实现

QLoginDialog.h

#ifndef QLOGINDIALOG_H
#define QLOGINDIALOG_H

#include 
#include 
#include 
#include 

class QLoginDialog : public QDialog
{
    Q_OBJECT
private:
    QLabel UserLable;
    QLabel PwdLable;
    QLineEdit UserEdit;
    QLineEdit PwdEdit;
    QPushButton LoginBtn;
    QPushButton CancelBtn;
    QString m_user;
    QString m_pwd;
private slots:
    void LoginBtn_Clicked();
    void CancelBtn_Clicked();
public:
    QLoginDialog(QWidget *parent = 0);
    QString getUser();
    QString getPwd();
    ~QLoginDialog();
};

#endif // QLOGINDIALOG_H

QLoginDialog.cpp

#include "QLoginDialog.h"

#include 

QLoginDialog::QLoginDialog(QWidget *parent)
    : QDialog(parent, Qt::WindowCloseButtonHint),
      UserLable(this), PwdLable(this), UserEdit(this),
      PwdEdit(this), LoginBtn(this), CancelBtn(this)
{
    UserLable.setText("user ID:");
    UserLable.move(20, 20);
    UserLable.resize(60, 25);

    UserEdit.move(85, 30);
    UserEdit.resize(180, 25);

    PwdLable.setText("Password:");
    PwdLable.move(20, 65);
    PwdLable.resize(60, 25);

    PwdEdit.move(85, 65);
    PwdEdit.resize(180, 25);
    PwdEdit.setEchoMode(QLineEdit::Password);

    CancelBtn.setText("Cancel");
    CancelBtn.move(85, 110);
    CancelBtn.resize(85, 30);

    LoginBtn.setText("Login");
    LoginBtn.move(180, 110);
    LoginBtn.resize(85, 30);

    setWindowTitle("Login");
    setFixedSize(285, 170);

    connect(&LoginBtn, SIGNAL(clicked()), this, SLOT(LoginBtn_Clicked()));
    connect(&CancelBtn, SIGNAL(clicked()), this, SLOT(CancelBtn_Clicked()));
}

void QLoginDialog::LoginBtn_Clicked()
{
    qDebug() << "LoginBtn_Clicked() Begin";

    m_user = UserEdit.text().trimmed();
    m_pwd = PwdEdit.text();

    done(Accepted);

    qDebug() << "LoginBtn_Clicked() End";
}

void QLoginDialog::CancelBtn_Clicked()
{
    qDebug() << "CancelBtn_Clicked() Bengin";

    done(Rejected);

    qDebug() << "CancelBtn_Clicked() End";
}

QString QLoginDialog::getUser()
{
    return m_user;
}

QString QLoginDialog::getPwd()
{
    return m_pwd;
}

QLoginDialog::~QLoginDialog()
{
    
}

4. 进一步开发

  • 检查用户名密码是否为空:当用户名或密码为空时提示错误
  • 随机验证码:当验证码输入错误时进行提示,验证码随机刷新

5. 小结

  • 登录对话框作为可复用的软件部分进行开发
  • 对话框之间通过成员变量成员函数传递数据
    • 将用户数据保存在私有成员变量
    • 通过公有成员函数进行数据传递

声明:此文章仅是本人在学习狄泰QT实验分析课程所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

你可能感兴趣的:(18_登录对话框示例分析)