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();

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值