Qt4学习笔记(二),QDialog学习之登录框实现

LoginDlg.h:

#ifndef LOGINDLG_H_
#define LOGINDLG_H_

#include <QDialog>

class QLineEdit;

class LoginDlg : public QDialog
{
	Q_OBJECT

public:
	LoginDlg(QWidget *parent = 0);
	~LoginDlg();

private slots:
	virtual void accept();

private:
	QLineEdit *m_pUserLineEdit;
	QLineEdit *m_pPwdLineEdit;
};

#endif // LOGINDLG_H_

LoginDlg.cpp:

#include "LoginDlg.h"
#include <QLabel>
#include <QLineEdit>
#include "GBK.h"
#include <QGridLayout>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QMessageBox>

LoginDlg::LoginDlg(QWidget *parent)
	: QDialog(parent)
{
	QLabel *pUserLabel = new QLabel(GBK::ToUnicode("用户名:"));
	QLabel *pPwdLabel = new QLabel(GBK::ToUnicode("密  码:"));
	m_pUserLineEdit = new QLineEdit;
	m_pPwdLineEdit = new QLineEdit;
	//设置输入框回显样式
	m_pPwdLineEdit->setEchoMode(QLineEdit::Password);
	//创建网格布局管理器
	QGridLayout *pGridLayout = new QGridLayout;
	//(0, 0, 1, 1) => (行, 列, 行跨度, 列跨度)
	pGridLayout->addWidget(pUserLabel, 0, 0, 1, 1);
	pGridLayout->addWidget(m_pUserLineEdit, 0, 1, 1, 3);
	pGridLayout->addWidget(pPwdLabel, 1, 0, 1, 1);
	pGridLayout->addWidget(m_pPwdLineEdit, 1, 1, 1, 3);

	QPushButton *pOkBtn = new QPushButton(GBK::ToUnicode("确定"));
	QPushButton *pCancelBtn = new QPushButton(GBK::ToUnicode("取消"));
	//水平布局
	QHBoxLayout *pBtnLayout = new QHBoxLayout;
	//设置确定和取消两个按钮之间的间隔为60
	pBtnLayout->setSpacing(60);
	pBtnLayout->addWidget(pOkBtn);
	pBtnLayout->addWidget(pCancelBtn);

	//垂直布局管理器
	QVBoxLayout *pDlgLayout = new QVBoxLayout;
	//设置pDlgLayout的边框宽度为40,即pDlgLayout内部子窗口到pDlgLayout边框的距离为40
	pDlgLayout->setMargin(40);
	pDlgLayout->addLayout(pGridLayout);
	//pGridLayout到pBtnLayout之间的距离为40
	pDlgLayout->addStretch(40);
	pDlgLayout->addLayout(pBtnLayout);
	setLayout(pDlgLayout);

	connect(pOkBtn, SIGNAL(clicked()), this, SLOT(accept()));
	connect(pCancelBtn, SIGNAL(clicked()), this, SLOT(reject()));

	setWindowTitle(GBK::ToUnicode("登录"));
	resize(300,200);
}

LoginDlg::~LoginDlg()
{

}

void LoginDlg::accept()
{
	if (m_pUserLineEdit->text() == "123" && m_pPwdLineEdit->text() == "123")
	{
		QDialog::accept();
	}
	else
	{
		QMessageBox::warning(this, GBK::ToUnicode("警告"),
			                 GBK::ToUnicode("用户名或密码错误!"), QMessageBox::Yes);
		m_pUserLineEdit->setFocus();
	}
}

main.cpp:

#include <QtGui/QApplication>
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout> //垂直布局
#include "LoginDlg.h"

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);

	LoginDlg loginDlg;
	if (loginDlg.exec() == QDialog::Accepted)
	{
		QWidget *pWidget = new QWidget();
		pWidget->show();
	}
	else
	{
		return 0;
	}	
	
	return a.exec();
}

运行结果:


备注:






猜你喜欢

转载自blog.csdn.net/u012592062/article/details/80267035
qt4