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

作业要求:

代码运行效果图:

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

登录成功 和 X号退出

代码:

①:头文件

#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

②:源文件

#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();  //将窗口最小化
}

③:主函数文件

#include "login.h"

#include <QApplication>

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

思维导图:

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sscanf函数是C语言中一个非常常用的函数,它可以将一个字符串按照指定的格式转换成相应的数据类型。在嵌入式开发中,sscanf函数也是非常常见的,因为很多时候需要从串口或者其他外部设备中读取数据,并将其转换成相应的数据类型进行处理。下面是一些sscanf函数的使用技巧: 1. 使用sscanf函数时一定要注意格式字符串的正确性。格式字符串中的占位符必须与待转换的数据类型相对应,否则会发生未知错误。 2. 如果待转换的字符串中包含多个数据,可以使用多个占位符进行转换。例如,如果待转换的字符串为"1,2,3",可以使用" %d,%d,%d"的格式字符串进行转换。 3. 可以使用sscanf函数的返回值来判断转换是否成功。如果返回值等于待转换字符串的长度,则说明转换成功,否则转换失败。 4. 如果待转换的字符串中包含浮点数,可以使用"%f"或者"%lf"的格式字符串进行转换。 5. 如果待转换的字符串中包含十六进制数,可以使用"%x"的格式字符串进行转换。 6. 如果待转换的字符串中包含字符或字符串,可以使用"%c"或者"%s"的格式字符串进行转换。 7. 如果待转换的字符串中包含指针类型的数据,可以使用"%p"的格式字符串进行转换。 总之,在使用sscanf函数时一定要注意格式字符串的正确性,否则很容易出现转换错误的情况。同时,还应该注意sscanf函数返回值的判断,以确保转换的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值