华清远见嵌入式学习——QT——作业2

作业要求:

代码运行效果图:

登录失败 和 最小化 和 取消登录

登录成功 和 X号退出

代码:

①:头文件

cpp 复制代码
#ifndef LOGIN_H
#define LOGIN_H

#include <QMainWindow>
#include <QLineEdit>     //行编辑器类
#include <QPushButton>   //按钮类
#include <QLabel>        //标签类
#include <QMovie>        //动图类
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class Login; }
QT_END_NAMESPACE

class Login : public QMainWindow
{
    Q_OBJECT

public:
    Login(QWidget *parent = nullptr);
    ~Login();

//定义信号函数
signals:
    void my_signal();

//定义槽函数
public slots:
    void cancel();    //关闭窗口
    void login();     //登录确认
    void minimize();  //窗口最小化

private:
    Ui::Login *ui;

    QLineEdit *edit1;
    QLineEdit *edit2;
    QMovie *mv1;
    QLabel *lab1;
    QMovie *mv2;
    QLabel *lab2;
    QMovie *mv3;
    QLabel *lab3;
    QLabel *lab4;
    QPushButton *btn1;
    QPushButton *btn2;
    QPushButton *btn3;
};
#endif // LOGIN_H

②:源文件

cpp 复制代码
#include "login.h"
#include "ui_login.h"

Login::Login(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::Login)
{
    ui->setupUi(this);
    //关于窗口的设置
    this->resize(640,640);    //重新设置窗口大小
    this->setFixedSize(640,640);    //固定窗口大小
    this->setWindowFlag(Qt::FramelessWindowHint);   //将窗口标题去除
    this->setStyleSheet("background-color:rgb(179,183,170)");  //设置窗口背景颜色

    //关于行编辑器的设置
    edit1 = new QLineEdit(this);    //实例化一个行编辑器对象,用于输入登录账号
    edit1->resize(320,80);    //重新设置行编辑器的大小
    edit1->move(160,260);    //将行编辑器移动至合适的位置
    edit1->setStyleSheet("background-color:white");  //设置行编辑器背景颜色
    edit1->setPlaceholderText("账号");    //使用占位,提示要在该行编辑器内输入的内容

    edit2 = new QLineEdit(this);    //实例化一个行编辑器对象,用于输入登录密码
    edit2->resize(320,80);    //重新设置行编辑器的大小
    edit2->move(160,360);     //将行编辑器移动至合适的位置
    edit2->setPlaceholderText("密码");    //使用占位,提示要在该行编辑器内输入的内容
    edit2->setStyleSheet("background-color:white");   //设置行编辑器背景颜色
    edit2->setEchoMode(QLineEdit::Password);    //将行编辑器的输出模式设置为密码模式

    //关于动图和标签的设置
    //实例化一个动图对象,用于接收动图
    mv1 = new QMovie(":/pictrue/xxxh.gif");
    //将动图放入lab1中
    lab1 = new QLabel(this);    //实例化一个标签,用于存放动图
    lab1->resize(640,260);     //重新设置标签的大小
    lab1->setMovie(mv1);     //存放动图
    mv1->start();         //让动图动起来
    lab1->setScaledContents(true);         //自动适应label

    //实例化一个动图对象,用于接收动图
    mv2 = new QMovie(":/pictrue/xh5.gif");
    lab2 = new QLabel(this);     //实例化一个标签,用于存放动图
    lab2->resize(80,80);    //重新设置标签的大小
    lab2->move(80,260);     //将标签移动至合适的位置
    lab2->setMovie(mv2);    //存放动图
    mv2->start();           //让动图动起来
    lab2->setScaledContents(true);      //自动适应label

    //实例化一个动图对象,用于接收动图
    mv3 = new QMovie(":/pictrue/xh3.gif");
    lab3 = new QLabel(this);     //实例化一个标签,用于存放动图
    lab3->resize(80,80);    //重新设置标签的大小
    lab3->move(80,360);     //将标签移动至合适的位置
    lab3->setMovie(mv3);    //存放动图
    mv3->start();           //让动图动起来
    lab3->setScaledContents(true);      //自动适应label

    lab4 = new QLabel("罗小黑之家欢迎您的到来 (づ ̄3 ̄)づ╭❤~",this);   //实例化一个标签,用于填充文字
    lab4->resize(320,40);        //重新设置标签大小
    lab4->move(160,460);        //将标签移动至合适的位置


    //关于按钮的设置
    btn1 = new QPushButton("登录",this);     //实例化一个按钮对象,用于登录
    btn1->resize(150,60);      //重新设置按钮的大小
    btn1->setStyleSheet("background-color:rgb(138,183,113);border-radius:10px");   //设置按钮背景颜色及设置圆角
    btn1->move(160,500);    //移动按钮至合适位置


    btn2 = new QPushButton("x",this);     //实例化一个按钮对象,用于关闭窗口
    btn2->resize(30,30);      //重新设置按钮的大小
    btn2->setStyleSheet("background-color:white");   //设置按钮背景颜色
    btn2->move(610,0);    //移动按钮至合适位置

    btn3 = new QPushButton("-",this);     //实例化一个按钮对象,用于最小化窗口
    btn3->resize(30,30);      //重新设置按钮的大小
    btn3->setStyleSheet("background-color:white");   //设置按钮背景颜色
    btn3->move(580,0);    //移动按钮至合适位置

    //关于在UI界面使用的按钮的设置
    ui->btn4->resize(150,60);     //重新设置按钮的大小
    ui->btn4->setStyleSheet("background-color:rgb(138,183,113);border-radius:10px");   //设置按钮背景颜色及设置圆角
    ui->btn4->move(330,500);     //将按钮移动至合适的位置

    //手动连接信号和自定义的槽函数 基于qt4版的连接
    connect(ui->btn4,SIGNAL(clicked()),this,SLOT(cancel()));  //将btn4发送的点击信号用槽处理,使窗口关闭
    connect(btn2,SIGNAL(clicked()),this,SLOT(cancel()));  //将btn2发送的点击信号用槽处理,使窗口关闭

    //手动连接信号和自定义的槽函数 基于qt5版的连接
    connect(btn1,&QPushButton::clicked,this,&Login::login);
    connect(btn3,&QPushButton::clicked,this,&Login::minimize);

}

Login::~Login()
{
    delete ui;
}

//对取消按钮和关闭按钮的槽函数处理
void Login::cancel()
{
    this->close();  //关闭窗口
}

//对登录按钮的槽函数处理
void Login::login()
{
    //判断账号和密码是否正确
    if(edit1->text() == "admin" && edit2->text() == "123456")
    {
        //账号和密码正确,则登录成功,并关闭窗口
        qDebug() << "登录成功";
        this->close();
    }
    else
    {
        //账号和密码不正确,则登录失败
        qDebug() << "登陆失败";
    }
}

//对最小化窗口按钮的槽函数处理
void Login::minimize()
{
    this->showMinimized();  //将窗口最小化
}

③:主函数文件

cpp 复制代码
#include "login.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Login w;
    w.show();
    return a.exec();
}

思维导图:

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习