1.
(1)完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面
(2)如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面
(3)如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能
要求:基于属性版和基于静态成员函数版至少各用一个
头文件logs.h
#ifndef LOGS_H
#define LOGS_H
#include <QWidget>
#include <QMovie>
namespace Ui {
class LOGS;
}
class LOGS : public QWidget
{
Q_OBJECT
public:
explicit LOGS(QWidget *parent = nullptr);
~LOGS();
private:
Ui::LOGS *ui;
public slots:
void Logsuccess();//自定义槽函数
};
#endif // LOGS_H
头文件Widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QObject>
#include <QMessageBox>//消息对话框类
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
public slots:
void on_login_slots();
void on_cancel_slots();
signals:
void my_jump();
};
#endif // WIDGET_H
源文件logs.cpp
#include "logs.h"
#include "ui_logs.h"
LOGS::LOGS(QWidget *parent) :
QWidget(parent),
ui(new Ui::LOGS)
{
ui->setupUi(this);
QMovie *mv = new QMovie(":/pictrue/01.gif");
ui->label->setMovie(mv);
mv->start();
}
LOGS::~LOGS()
{
delete ui;
}
//自定义槽函数的处理
void LOGS::Logsuccess()
{
this->show();//显示自己的界面
}
源文件widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowFlag(Qt::FramelessWindowHint);//去除头部
this->setAttribute(Qt::WA_TranslucentBackground);//QT中窗口部件背景透明化
this->setWindowIcon(QIcon(":/pictrue/1.jpg"));//设置图标
connect(ui->cancelpus,SIGNAL(clicked()),this,SLOT(on_cancel_slots()));//qt4 不友好
connect(ui->Loginpus,&QPushButton::clicked,this,&Widget::on_login_slots);//qt5
}
Widget::~Widget()
{
delete ui;
}
//登录键按下槽函数的处理
void Widget::on_login_slots()
{
if((ui->loglineEdit->text()=="Mikasa")&(ui->pwdlineEdit->text()=="123456"))//对输入的UID与密码进行判断
{
this->close();//关闭当前
emit this->my_jump();//用关键字 emit 手动触发信号
}else {
//基于属性版本
QMessageBox logerror(QMessageBox::Critical,
"登录失败",//标题
"账号和密码不匹配,是否重新登录",//提示文本
QMessageBox::Yes | QMessageBox::No,//提供的按钮
this);
int res = logerror.exec();
if(res == QMessageBox::Yes)//判断用户按下的键
{
ui->pwdlineEdit->clear();//清空密码栏
}else if (res == QMessageBox::No)
{
this->close();//关闭程序
}
}
}
//取消键按下槽函数的处理
void Widget::on_cancel_slots()
{
//静态成员函数
int res = QMessageBox::question(this,
"退出",
"是否确定退出登录",
QMessageBox::Yes|QMessageBox::No);
if(res == QMessageBox::Yes)//判断按下的键
{
this->close();
}else if(res == QMessageBox::No)
{
}
}
main.cpp
#include "widget.h"
#include <QApplication>
#include "logs.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
LOGS L;//实例化第二个界面
QObject::connect(&w,&Widget::my_jump,&L,&LOGS::Logsuccess);//将两个界面进行连接
return a.exec();
}
效果图
登录成功跳转界面:
思维导图