思维导图
作业:mywnd.cpp
#include "mywnd.h"
mywnd::mywnd(QWidget *parent)
: QWidget(parent) //显性调用父类的有参构造完成对子类从父类继承下来成员的初始化工作
{
//窗口设置
this->resize(QSize(500, 433));
this->setWindowTitle("Widget");
this->setWindowIcon(QIcon(":/icon/wodepeizhenshi.png"));
QLabel *lab1 = new QLabel(this);
//图片1
lab1->resize(QSize(500, 200));
lab1->setPixmap(QPixmap(":/icon/logo.png"));
lab1->move(QPoint(0, 0));
lab1->setScaledContents(true);
//图片2
QLabel *lab2 = new QLabel(this);
lab2->resize(QSize(50, 50));
lab2->setPixmap(QPixmap(":/icon/userName.jpg"));
lab2->move(QPoint(60, 230));
lab2->setScaledContents(true);
//图片3
QLabel *lab3 = new QLabel(this);
lab3->resize(QSize(50, 50));
lab3->setPixmap(QPixmap(":/icon/passwd.jpg"));
lab3->move(QPoint(60, 310));
lab3->setScaledContents(true);
//账号行编辑器
lin1 = new QLineEdit(this);
lin1->resize(250, 50);
lin1->move(QPoint(150, 230));
//密码行编辑器
lin2 = new QLineEdit(this);
lin2->resize(250, 50);
lin2->move(QPoint(150, 310));
lin2->setEchoMode(QLineEdit::Password);
//登录按钮
btn1 = new QPushButton(QIcon(":/icon/login.png") ,"登录", this);
btn1->resize(80, 50);
btn1->move(QPoint(130, 370));
//取消按钮
btn2 = new QPushButton(QIcon(":/icon/cancel.png") ,"取消", this);
btn2->resize(80, 50);
btn2->move(QPoint(290, 370));
l1 = new login;
connect(btn1, &QPushButton::clicked, this, &mywnd::Login);
connect(this, &mywnd::jumpToLogin, l1, &login::jumpToLogin_slot);
connect(btn2, &QPushButton::clicked, this, &mywnd::cancel);
}
void mywnd::Login()
{
if(lin1->text()==QString("admin")&&lin2->text()==QString("123456")){
QMessageBox box(QMessageBox::Information, "登录",
"登陆成功", QMessageBox::Ok, this);
box.exec();
emit this->jumpToLogin();
this->close();
}else{
QMessageBox box(QMessageBox::Critical,
"错误", "账号密码不匹配,是否重新登录",
QMessageBox::Yes|QMessageBox::No, this);
box.setDefaultButton(QMessageBox::Yes);
int ret = box.exec();
if(QMessageBox::Yes==ret){
lin2->clear();
}else{
this->close();
}
}
}
void mywnd::cancel()
{
//使用静态成员函数的方式打开一个对话框
int ret = QMessageBox::question(this,
"请问",
"是否确认要退出",
QMessageBox::Yes|QMessageBox::No,
QMessageBox::No);
switch (ret) {
case QMessageBox::Yes:
this->close();
break;
case QMessageBox::No:
break;
}
}
mywnd::~mywnd()
{
}
mywnd.h
#ifndef MYWND_H
#define MYWND_H //防止文件重复包含
#include <QWidget> //父类的头文件
#include <QDebug> //信息调试头文件
#include <QPushButton> //按钮类头文件
#include <QLineEdit> //行编辑器类头文件
#include <QLabel> //标签类头文件
#include <QMessageBox>
#include"login.h"
//自定义自己的界面,公告继承自QWidget,父类中重写了绘制事件处理函数
class mywnd : public QWidget
{
Q_OBJECT //信号与槽的对象,没有这个对象,信号与槽就不能使用了
signals:
void jumpToLogin();
public slots:
void Login(); //登录函数
void cancel(); //退出函数
public:
mywnd(QWidget *parent = nullptr); //构造函数的声明,并且有一个带默认参数的形参
~mywnd(); //析构函数的声明
QLineEdit *lin1;
QLineEdit *lin2;
QPushButton *btn1;
QPushButton *btn2;
login *l1;
};
#endif // MYWND_H