当用户点击取消按钮,弹出问题对话框,询问是否要确定退出登录,并提供两个按钮,yes|No,如果用户点击的Yes,则关闭对话框,如果用户点击的No,则继续登录
当用户点击的登录按钮,进行账号和密码的匹配,如果匹配成功,则弹出信息对话框,给出信息为,登录成功,并给出一个确定按钮,当用户点击该按钮后,关闭登录界面,弹出另一个界面
当账号和密码不匹配是,给出错误对话框,给出信息为账号和密码不匹配,是否重新登录,并提供两个按钮 Yes|No,如果用户点击了Yes,则清空密码框后,继续登录。如果用户点击的取消,则关闭登录界面
要求:静态成员函数版本和对象版本各至少实现一个
main.c
#include "widget.h"
#include"second.h" //第二个界面的头文件
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w; //实例化的第一个界面
w.show();
Second s; //实例化第二个界面
//将第一个界面的跳转信号与第二个界面的槽函数进行连接
//s.connect(&w, &Widget::jump, &s, &Second::jump_slot);
//w.connect(&w, &Widget::jump, &s, &Second::jump_slot);
QObject::connect(&w, &Widget::jump, &s, &Second::jump_slot);
return a.exec();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox> //消息对话框类
#include<QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->resize(900,800); //重置界面尺寸
this->setWindowTitle("登录"); //设置界面名称为:登录
this->setWindowIcon(QIcon("C:\\Users\\86183\\Desktop\\icon_dj40cz9xze4\\pictrue\\qq.png"));
//设置界面图标
//QLabel *
lab1 = new QLabel(this); //定义文本
lab1->resize(300,200); //设置文本框大小
lab1->move(300,200); //移动文本位置
lab1->setPixmap(QPixmap("C:\\Users\\86183\\Desktop\\icon_dj40cz9xze4\\qq.png"));
//设置文本为图片
lab1->setScaledContents(true); //设置图片自动缩放
//QLabel *
lab2 = new QLabel("账号:",this); //定义文本
lab2->resize(50,40); //重置文本框大小
lab2->move(lab1->x(),lab1->y()+lab1->height()+10); //移动文本位置
//QLabel *
lab3 = new QLabel("密码:",this); //定义文本
lab3->resize(50,40); //重置文本框大小
lab3->move(lab2->x(),lab2->y()+lab2->height()); //移动文本位置
//QLineEdit *
edit1 = new QLineEdit(this);
edit1->resize(250,30); //重置尺寸
edit1->move(lab2->x()+lab2->width(),lab2->y());
edit1->setStyleSheet("color:black"); //设置字体颜色
edit1->setAlignment(Qt::AlignCenter); //设置文本对齐方式:居中
edit1->setPlaceholderText("输入QQ账号"); //设置占位文本
//QLineEdit *
edit2 = new QLineEdit(this);
edit2->resize(250,30); //重置尺寸
edit2->move(lab3->x()+lab3->width(),lab3->y());
edit2->setStyleSheet("color:black"); //设置字体颜色
edit2->setAlignment(Qt::AlignCenter); //设置文本对齐方式:居中
edit2->setEchoMode(QLineEdit::Password); //设置密文模式
edit2->setPlaceholderText("输入QQ密码"); //设置占位文本
//QPushButton *
btn1 = new QPushButton("登录",this); //定义按键
btn1->resize(110,40); //重置按键大小
btn1->move(lab3->x(),lab3->y()+lab3->height()); //移动按键位置
//QPushButton *
btn2 = new QPushButton("取消",this); //定义按键
btn2->resize(110,40); //重置按键大小
btn2->move(btn1->x()+btn1->width()+80,btn1->y()); //移动按键位置
/*
当用户点击取消按钮,弹出问题对话框,询问是否要确定退出登录,并提供两个按钮,yes|No,如果用户点击的Yes,则关闭对话框,如果用户点击的No,则继续登录
当用户点击的登录按钮,进行账号和密码的匹配,如果匹配成功,则弹出信息对话框,给出信息为,登录成功,并给出一个确定按钮,当用户点击该按钮后,关闭登录界面,弹出另一个界面
当账号和密码不匹配是,给出错误对话框,给出信息为账号和密码不匹配,是否重新登录,并提供两个按钮 Yes|No,如果用户点击了Yes,则清空密码框后,继续登录。如果用户点击的取消,则关闭登录界面
*/
connect(btn1, &QPushButton::clicked, this, &Widget::my_signal_1_slot);
connect(btn2, &QPushButton::clicked, this, &Widget::my_signal_2_slot);
}
Widget::~Widget()
{
delete ui;
}
void Widget::my_signal_1_slot()
{
if(edit1->text() == "sc"&& edit2->text() == "123" )
{
QMessageBox box(QMessageBox::Question,
"结果",
"登录成功",
QMessageBox::Yes,
this);
box.setButtonText(QMessageBox::Yes, "确定");
box.setDefaultButton(QMessageBox::No);
int btn = box.exec();
if(btn == QMessageBox::Yes)
{
this->close();
emit jump();
}
}
else
{
QMessageBox box(QMessageBox::Question,
"结果",
"账号与密码不匹配,是否重新登录",
QMessageBox::Yes|QMessageBox::No,
this);
int btn = box.exec();
if(btn == QMessageBox::Yes)
{
edit2->clear();
}
else if(btn == QMessageBox::No)
{
this->close();
}
}
}
void Widget::my_signal_2_slot()
{
int btn = QMessageBox::warning(this,
"警告",
"是否要确定退出登录",
QMessageBox::Yes|QMessageBox::No,
QMessageBox::No);
if(btn == QMessageBox::Yes)
{
this->close();
}
else if(btn==QMessageBox::No)
{
}
}