zoukankan      html  css  js  c++  java
  • 第十八课、登录对话框实例分析------------------狄泰软件学院

    一、登录对话框

    1、登录对话框的需求分析

    (1)、可复用软件部件(不同项目中都可以使用)

    (2)、获取用户名和密码

    (3)、附加需求:随机验证码

     

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

    3、获取用户名和密码及数据在两个不同对话框之间传递

    (1)、通过附加的成员变量和成员函数完成不同对话框间的数据传递

    #ifndef QLOGINDIALOG_H
    #define QLOGINDIALOG_H
    
    #include <QDialog>
    #include <QLabel>
    #include <QLineEdit>
    #include <QPushButton>
    
    class QLoginDialog : public QDialog
    {
        Q_OBJECT
    private:
        QLabel UserLabel;
        QLabel PwdLabel;
        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 .h
    #include "QLoginDialog.h"
    
    QLoginDialog::QLoginDialog(QWidget* parent) :
        QDialog(parent), UserLabel(this), PwdLabel(this), UserEdit(this), PwdEdit(this), LoginBtn(this), CancelBtn(this)
    {
        UserLabel.setText("User ID:");
        UserLabel.move(20, 30);
        UserLabel.resize(60, 25);
    
        PwdLabel.setText("Passwd:");
        PwdLabel.move(20, 65);
        PwdLabel.resize(60, 25);
    
        UserEdit.move(85, 30);
        UserEdit.resize(180, 25);
    
        PwdEdit.move(85, 65);
        PwdEdit.resize(180, 25);
        PwdEdit.setEchoMode(QLineEdit::Password);//输入密码时以星号显示
    
        LoginBtn.setText("Login");
        LoginBtn.move(180, 110);
        LoginBtn.resize(85, 30);
    
        CancelBtn.setText("Canlel");
        CancelBtn.move(85, 110);
        CancelBtn.resize(85, 30);
    
        setWindowTitle("Login");
        setFixedSize(285, 170);//固定窗口大小
    
        connect(&CancelBtn, SIGNAL(clicked()), this, SLOT(CancelBtn_clicked()));
        connect(&LoginBtn, SIGNAL(clicked()), this, SLOT(LoginBtn_clicked()));
    }
    void QLoginDialog::LoginBtn_clicked()
    {
        m_user = UserEdit.text().trimmed();//保存用户名和密码并将前后空格去掉
        m_pwd = PwdEdit.text();
    
        done(Accepted);
    }
    void QLoginDialog::CancelBtn_clicked()
    {
        done(Rejected);
    }
    QString QLoginDialog::getUser()
    {
        return m_user;
    }
    QString QLoginDialog::getPwd()
    {
        return m_pwd;
    }
    QLoginDialog::~QLoginDialog()
    {
    
    }
    QLoginDialog.cpp
    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QtGui/QWidget>
    #include <QPushButton>
    #include "QLoginDialog.h"
    
    class Widget : public QWidget
    {
        Q_OBJECT
    private:
        QPushButton TestBtn;
    private slots:
        void TestBtn_clicked();
    public:
    
        Widget(QWidget *parent = 0);
        ~Widget();
    };
    
    #endif // WIDGET_H
    QWidget.h
    #include "Widget.h"
    #include <QDebug>
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent), TestBtn(this)
    {
        TestBtn.setText("TestBtn");
    
        setFixedSize(200, 50);
    
        connect(&TestBtn, SIGNAL(clicked()), this, SLOT(TestBtn_clicked()));
    }
    void Widget::TestBtn_clicked()
    {
        QLoginDialog qld;
        if(qld.exec() == QDialog::Accepted)
        {
            qDebug() << "User:" << qld.getUser();
            qDebug() << "Pwd:" << qld.getPwd();
        }
    
    }
    Widget::~Widget()
    {
        
    }
    Widget.cpp
    #include <QtGui/QApplication>
    #include "Widget.h"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        w.show();
        
        return a.exec();
    }
    main.cpp

    二、进一步开发

    1、检查用户名和密码是否为空

    (1)、当用户名或密码为空时提示错误

    2、随机验证码

    (1)、当验证码输入错误时进行提示

    (2)、验证码随机刷新

    三、小结

    (1)、登录对话框作为可复用的软件部件进行开发

    (2)、对话框之间通过成员变量和成员函数传递数据

    A、将用户数据保存在私有成员变量中

    B、通过公有函数进行数据传递

  • 相关阅读:
    解析大型.NET ERP系统 权限模块设计与实现
    Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架
    解析大型.NET ERP系统 单据编码功能实现
    解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计
    Windows 10 部署Enterprise Solution 5.5
    解析大型.NET ERP系统 设计异常处理模块
    解析大型.NET ERP系统 业务逻辑设计与实现
    解析大型.NET ERP系统 多国语言实现
    Enterprise Solution 管理软件开发框架流程实战
    解析大型.NET ERP系统 数据审计功能
  • 原文地址:https://www.cnblogs.com/gui-lin/p/6400913.html
Copyright © 2011-2022 走看看