zoukankan      html  css  js  c++  java
  • LOGIN Dialogue of Qt

    自定义类CLoginDlg,继承QDialog
    logindlg.h//对CLoginDlg的声明,包括构造函数的声明,成员函数,成员变量的声明
    #ifndef LOGINDLG_H
    
    #define LOGINDLG_H
    
    #include <QtGui/QDialog>
    
    class QLineEdit;//注意:这是类CLineEdit的传递声明,因为在下面使用到了CLineEdit对象指针
    
    class CLoginDlg : public QDialog
    
    {
    
    Q_OBJECT
    
    public:
    
    CLoginDlg(QWidget* = 0);//构造函数的声明,QWidget是它的顶级父类
    
    virtual ~CLoginDlg();
    
    public slots:
    
    virtual void accept();//从新声明基类QDialog的虚函数accept(),在cpp文件中将重写此函数
    
    private:
    
    QLineEdit* usrLineEdit;
    
    QLineEdit* pwdLineEdit;
    
    };
    
    #endif // LOGINDLG_H
    
    
    logindlg.cpp
    
    #include "logindlg.h"
    
    #include <QtGui/QtGui>
    
    CLoginDlg::CLoginDlg(QWidget* parent)
    
    : QDialog(parent)//CLoginDlg类的构造函数
    
    {
    
    QLabel* usrLabel = new QLabel(tr("用户名:"));//创建一个QLabel的指针对象,名为"用户名"
    
    QLabel* pwdLabel = new QLabel(tr("密 码:"));//创建一个QLabel的指针对象,名为"密码"
    
    usrLineEdit = new QLineEdit;//usrLineEdit已在头文件中声明,为QLineEdit类的指针对象
    
    pwdLineEdit = new QLineEdit;//pwdLineEdit已在头文件中声明,为QLineEdit类的指针对象
    
    pwdLineEdit->setEchoMode(QLineEdit::Password);//设置pwdLineEdit的现实方式
    
    ///////////////////////////////////////////////////////////////////////
    
    QGridLayout* gridLayout = new QGridLayout;
    
    gridLayout->addWidget(usrLabel, 0, 0, 1, 1);
    
    gridLayout->addWidget(usrLineEdit, 0, 1, 1, 3);
    
    gridLayout->addWidget(pwdLabel, 1, 0, 1, 1);
    
    gridLayout->addWidget(pwdLineEdit, 1, 1, 1, 3);//创建一个网格布局管理器指针对象gridLayout,并将usrLabel,usrLineEdit,pwdLabel,pwdLineEdit 放入此网格管理器
    
    ///////////////////////////////////////////////////////////////////////
    
    QPushButton* okBtn = new QPushButton(tr("确定"));
    
    QPushButton* cancelBtn = new QPushButton(tr("取消"));
    
    QHBoxLayout* btnLayout = new QHBoxLayout;
    
    btnLayout->setSpacing(60);
    
    btnLayout->addWidget(okBtn);
    
    btnLayout->addWidget(cancelBtn);
    
    QVBoxLayout* dlgLayout = new QVBoxLayout;
    
    dlgLayout->setMargin(40);
    
    dlgLayout->addLayout(gridLayout);
    
    dlgLayout->addStretch(40);
    
    dlgLayout->addLayout(btnLayout);
    
    setLayout(dlgLayout);
    
    //创建按钮指针对象okBtn和cancelBtn,创建水平布局管理器指针对象btnLayout,垂直布局管理//器指针对象dlgLayout,并进行一些设置
    
    ///////////////////////////////////////////////////////////////////////
    
    connect(okBtn, SIGNAL(clicked()), this, SLOT(accept()));
    
    connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject()));
    
    //信号与槽的关联
    
    ///////////////////////////////////////////////////////////////////////
    
    setWindowTitle(tr("登录"));
    
    resize(300, 200);
    
    }
    
    CLoginDlg::~CLoginDlg()//析构函数
    
    {
    
    delete usrLineEdit;
    
    delete pwdLineEdit;
    
    }
    
    void CLoginDlg::accept()//重写accept()函数
    
    {
    
    if(usrLineEdit->text().trimmed() == tr("xuri")
    
    && pwdLineEdit->text() == tr("123"))
    
    {
    
    QDialog::accept();
    
    }
    
    else
    
    {
    
    QMessageBox::warning(this,
    
    tr("警告"),
    
    tr("用户或密码错误!"),
    
    QMessageBox::Yes);
    
    usrLineEdit->setFocus();
    
    }
    
    }
    
     
    
    main.cpp
    
    #include <QtGui/QtGui>
    
    #include "logindlg.h"
    
    int main(int argc, char *argv[])
    
    {
    
    QApplication a(argc, argv);
    
    QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
    
    CLoginDlg dlg;
    
    return dlg.exec();
    
    }
    
  • 相关阅读:
    inclusion_tag 组件
    自定制插件widget 组件
    Python的学习之旅———logging模块
    Python的学习之旅———面向过程
    Python的学习之旅———迭代器 生成器
    Python的学习之旅———模块与包的使用 常用模块
    Python的学习之旅———函数的递归调用 匿名函数 内置函数
    Python的学习之旅———三元表达式 列表解析 序列化
    Python的学习之旅———函数对象、函数嵌套、名称空间与作用域、装饰器
    Python的学习之旅———名称空间与作用域
  • 原文地址:https://www.cnblogs.com/johnpher/p/2658761.html
Copyright © 2011-2022 走看看