您的位置:首页 > 编程语言 > Qt开发

QT学习笔记4---登陆对话框

2010-04-29 22:47 357 查看
自定义类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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: