调用qt的类,用代码来实现一个简单的登录界面
1.新建一个有ui界面的工程,其基类为dialog
2. 代码实现
dialog.h
添加控件头文件
#include <QLabel>
#include <QGridLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QMessageBox>
控件声明
private:
QLineEdit *usrLineEdit;
QLineEdit *pwdLineEdit;
QLabel *usrLabel;
QLabel *pwdLabel;
QGridLayout *gridlayout;
QPushButton *okBtn;
QPushButton *cancelBtn;
QVBoxLayout *vboxLayout;
public slots:
//virtual void accept ();
private slots:
//自定义私有槽函数
void okBtnclicked();
dialog.cpp
构造函数中实例控件并实现
//设置页面最大最小
this->setMinimumSize(280,150);
this->setMaximumSize(280,150);
//实例用户名密码控件
usrLabel = new QLabel(tr("用户名:"));
pwdLabel = new QLabel(tr("密 码:"));
usrLineEdit = new QLineEdit;
pwdLineEdit = new QLineEdit;
//密码*号输入
pwdLineEdit->setEchoMode(QLineEdit::Password);
//限制输入12位
usrLineEdit->setMaxLength(12);
pwdLineEdit->setMaxLength(12);
//地址占位符
usrLineEdit->setPlaceholderText("请输入用户名");
pwdLineEdit->setPlaceholderText("请输入密码");
//实例网格布局控件
gridlayout = new QGridLayout;
//添加布局 0,0,1,1 行 列 行间距 列间距
gridlayout->addWidget(usrLabel,0,0,1,1);
gridlayout->addWidget(usrLineEdit,0,1,1,1);
//间隔
gridlayout->setSpacing(20);
gridlayout->addWidget(pwdLabel,1,0,1,1);
gridlayout->addWidget(pwdLineEdit,1,1,1,1);
//实例按钮控件
okBtn = new QPushButton(tr("确定"));
cancelBtn = new QPushButton(tr("取消"));
//使用定义虚函数的连接
//connect(okBtn,SIGNAL(clicked()),this,SLOT(accept()));
//自定义槽函数的连接
connect(okBtn,SIGNAL(clicked()),this,SLOT(okBtnclicked()));
connect(cancelBtn,SIGNAL(clicked()),this,SLOT(reject()));
QHBoxLayout *hboxLayout = new QHBoxLayout;
hboxLayout->setSpacing(60);
//横向布局填充控件
hboxLayout->addWidget(okBtn);
hboxLayout->addWidget(cancelBtn);
//实例纵向布局填充刚刚实例的两个布局
vboxLayout = new QVBoxLayout;
vboxLayout->addLayout(gridlayout);
vboxLayout->addLayout(hboxLayout);
//显示内容
this->setLayout(vboxLayout);
相应的槽函数实现
//定义虚函数写法
/*
void Dialog::accept()
{
if(usrLineEdit->text().trimmed() == "admin" && pwdLineEdit->text().trimmed() == "admin")
{
QDialog:: accept ();
}else
{
QMessageBox::warning(this,"警告","用户名或密码错误!!!",
QMessageBox::Yes);
//内容清除和光标定位
usrLineEdit->setFocus();
pwdLineEdit->clear();
usrLineEdit->clear();
}
}
*/
/一般定义
void Dialog::okBtnclicked()
{
if(usrLineEdit->text() == tr("admin")
&& pwdLineEdit->text() == tr("admin"))
{
accept();
}
else{
QMessageBox::warning(this,"警告","用户名或密码错误",
QMessageBox::Yes);
usrLineEdit->clear();
pwdLineEdit->clear();
//定位光标
usrLineEdit->setFocus();
}
}
3.效果展示