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_OBJECTpublic: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_OBJECTpublic: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();
}
效果图
登录成功跳转界面:
思维导图