作业
完善登录界面
1.点击登录按钮后,判断账号和密码是否致
1.1 如果匹配失败,则弹出错误对话框,文本内容账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel, 点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。
1.2如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok, 点击ok后,关闭整个登录界面, 跳转到其他界面
2.点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes, 则直接关闭整个登录界面,如果点击no则进行进行登录
要求:对象版和静态成员函数版至少各实现一个
第一步:登陆界面的搭建
//修改边框大小以及图标,名称
this->setFixedSize(644,492);
this->setWindowTitle(QString("APEX LEGEND -- YOU ARE THE CHAMPION"));
this->setWindowIcon(QIcon(":/3.png"));
//标签位置
QLabel *lab1 = new QLabel;
lab1->setParent(this);
lab1->resize(644,286);
lab1->setPixmap(QPixmap(":/2.png"));
lab1->setScaledContents(true);
//标签位置
QLabel *lab2 = new QLabel;
lab2->setParent(this);
lab2->move(0,286);
lab2->resize(644,206);
lab2->setPixmap(QPixmap(":/apex.png"));
lab2->setScaledContents(true);
//标签位置
QLabel *lab3= new QLabel("apex账号:",this);
QFont ft("Microsoft YaHei",15,75);
lab3->setFont(ft);
lab3->move(120,320);
lab3->setScaledContents(true);
//标签位置
QLabel *lab4= new QLabel("apex密码:",this);
QFont ft1("Microsoft YaHei",15,75);
lab4->setFont(ft1);
lab4->move(120,360);
lab4->setScaledContents(true);
//编辑
edt1 = new QLineEdit;
edt1->setParent(this);
//edt1->move(300,355);
//edt1->resize(200,30);
edt1->setGeometry(280,323,200,35);
//编辑
edt2 = new QLineEdit;
edt2->setParent(this);
edt2->setGeometry(280,363,200,35);
edt2->setEchoMode(QLineEdit::Password);
//apex登录
btn1 = new QPushButton(this);
btn1->resize(90,45);
btn1->setText("登录");
btn1->move(280,430);
btn1->setStyleSheet("background-color:dark");
btn1->setIcon(QIcon(":/liesha.png"));
//apex登录
btn2 = new QPushButton;
btn2->setParent(this);
btn2->resize(90,45);
btn2->setText("取消");
btn2->move(390,430);
btn2->setStyleSheet("background-color:dark");
btn2->setIcon(QIcon(":/dashi.png"));
QCheckBox *box = new QCheckBox;
box->setParent(this);
box->resize(100,45);
box->setText("自动登录");
box->move(280,395);
QCheckBox *box1 = new QCheckBox;
box1->setParent(this);
box1->resize(100,45);
box1->setText("记住密码");
box1->move(400,395);
connect(btn1,&QPushButton::clicked,this,&Widget::on_clicked_slot);
connect(btn2,&QPushButton::clicked,this,&Widget::on_clicked_slot2);
//将自定义的信号与槽函数连接
connect(this,&Widget::mysignal,[](QString e){
qDebug()<<e;
});
第二步:账号与密码匹配
void Widget::on_clicked_slot()
{
char text[32]="admin";
char password[32]="123456";
if(edt1->text()==text)
{
if(edt2->text() == password)
{
qDebug()<<"登陆成功";
emit mysignal("登陆成功");
}
else
{
qDebug()<<"登陆失败";
emit mysignal("密码错误");
edt2->clear();
}
}
}
void Widget::mySlot(QString e)
{
emit mysignal("取消登录");
}
void Widget::on_clicked_slot2()
{
QApplication::exit();
}
void ApexGame::mySlot(QString e)
{
this->show();
}
void ApexForm::mySlot(QString e)
{
if(e == "登陆成功")
{
QMessageBox box(QMessageBox::Information,
"信息",
"登陆成功",
QMessageBox::Ok| QMessageBox::No,
this);
//调用exec进入 运行态
int ret = box.exec();
//功能:使对话框进入运行态
//参数:无
//返回值:整型,对话框中用户点击的按钮值
//对用户点击的结果进行判断
if(ret == QMessageBox::Ok)
{
emit mysignal1("游戏开始!");
this->close();
}else if(ret == QMessageBox::No)
{
this->close();
}
}else if(e == "密码错误")
{
int ret = QMessageBox::warning(this,"警告","密码错误!!是否重新登陆?",
QMessageBox::Ok| QMessageBox::Cancel);
//对用户点击的结果进行判断
if(ret == QMessageBox::Ok)
{
this->close();
}else if(ret == QMessageBox::Cancel)
{
QApplication::exit();
}
}
else if(e == "退出登录")
{
int ret = QMessageBox::question(this,"问题","你确定要退出登录吗?",
QMessageBox::Yes| QMessageBox::No);
//对用户点击的结果进行判断
if(ret == QMessageBox::Yes)
{
QApplication::exit();
}else if(ret == QMessageBox::No)
{
this->close();
}
}
}
ApexForm f;
ApexGame g;
//将W界面的自定义信号函数,与f界面的槽函数进行连接
QObject::connect(&w,&Widget::mysignal,&f,&ApexForm::mySlot);
QObject::connect(&f,&ApexForm::mysignal1,&w,&Widget::mySlot);
QObject::connect(&f,&ApexForm::mysignal1,&g,&ApexGame::mySlot);