欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > 嵌入式学习

嵌入式学习

2024/10/24 13:26:10 来源:https://blog.csdn.net/qq_46068832/article/details/139723270  浏览:    关键词:嵌入式学习

笔记

作业 

        使用手动连接,将登录框中的取消按钮使用第二中连接方式,右击转到槽,在该槽函数中,调用关闭函数。将登录按钮使用qt4版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,则输出“登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空。

        widget.h文件:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QIcon>  //图标类
#include <QLabel>  //标签类
#include <QMovie>  //动图类
#include <QPushButton>  //按钮类
#include <QLineEdit>  //编辑器类
#include <QTimer>  //定时器类
#include <QMouseEvent>  //鼠标事件类
#include <QPoint>  //坐标点类QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void my_signal_login();//声明  登录按钮  的信号函数void my_signal_cancel();//声明  取消按钮  的信号函数public slots:void my_slot_login();//声明  登录按钮  的槽函数void my_slot_cancel();//声明  取消按钮  的槽函数private slots:void on_btn_mul_icon_clicked();private:Ui::Widget *ui;QLineEdit *edit_account;//声明  账号输入框  的行编辑器QLineEdit *edit_password;//声明  密码输入框  的行编辑器QPushButton *btn_login;//声明  登录  按钮QPushButton *btn_cancel;//声明  取消  按钮QTimer *timer;//声明  定时器protected://重写鼠标按下事件void mousePressEvent(QMouseEvent *event) override;//重写鼠标移动事件void mouseMoveEvent(QMouseEvent *event) override;private:QPoint dragPosition;//声明一个坐标点};
#endif // WIDGET_H

        widget.cpp文件: 

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), edit_account(new QLineEdit(this))   //账号   行编辑器, edit_password(new QLineEdit(this))   //密码   行编辑器, btn_login(new QPushButton("登录",this))   //登录  按钮, btn_cancel(new QPushButton("取消",this))  //取消  按钮, timer(new QTimer(this))    //定时器{ui->setupUi(this);//窗口设置this->resize(430,330);//重新设置窗口大小this->setWindowIcon(QIcon(":/QQ/qq.png"));//设置窗口标签this->setWindowTitle("QQ");//设置窗口标题this->setStyleSheet("background-color:rgb(255,255,255)");//设置窗口背景颜色this->setFixedSize(430,330);//固定窗口大小this->setWindowFlag(Qt::FramelessWindowHint);//去掉窗口头部    设置纯净窗口//顶部动图QLabel *lab_dynamic_picture = new QLabel(this);//创建标签,用于放动图lab_dynamic_picture->resize(430,165);//设置大小QMovie *mv = new QMovie(":/QQ/qq2.gif");//设置一个动图对象接收动图lab_dynamic_picture->setMovie(mv);//将动图设置到label中mv->start();//让图片动起来lab_dynamic_picture->setScaledContents(true);//让图片自适应//左上角  “企鹅”   图标QLabel *lab_penguin_icon = new QLabel(this);//创建标签,用于放 企鹅 图标lab_penguin_icon->move(12,10);//移动lab_penguin_icon->resize(30,30);//设置大小lab_penguin_icon->setPixmap(QPixmap(":/QQ/Icon.png"));//在标签中添加图片lab_penguin_icon->setScaledContents(true);//让图片自适应//右上角   “设置”   图标QPushButton *btn_setting_icon = new QPushButton(QIcon(":/QQ/set.png"),"",this);//创建按钮  用于放“设置图标”btn_setting_icon->move(340,10);//移动btn_setting_icon->resize(25,25);//设置大小//右上角  “ - ”  图标QPushButton *btn_sub_icon = new QPushButton(QIcon(":/QQ/sub.png"),"",this);//创建按钮  用于放 “ - ” 图标btn_sub_icon->move(370,10);//移动btn_sub_icon->resize(25,25);//设置大小//    //创建按钮  用于放 “ X ” 图标
//    QPushButton *btn_mul_icon = new QPushButton(QIcon(":/QQ/mul.png"),"",this);
//    //移动
//    btn_mul_icon->move(400,10);
//    //设置大小
//    btn_mul_icon->resize(25,25);//ui布局中已经设置过  “X”  图标ui->btn_mul_icon->raise();//让在ui布局中设置的 “X” 按钮浮在上一层//窗口中间  “头像”  图标QLabel *lab_head = new QLabel(this);//创建标签  用于放  头像  图标lab_head->move(182,80);//移动lab_head->resize(65,65);//设置大小lab_head->setPixmap(QPixmap(":/QQ/head.png"));//设置头像图片lab_head->setScaledContents(true);//让图片自适应lab_head->setStyleSheet("border-radius:32px");//将头像设置成圆形//账号输入框前面的图标QLabel *lab_icon_account = new QLabel(this);//创建一个标签类,用于放账号前面的图标lab_icon_account->move(95,160);//移动lab_icon_account->resize(30,30);//设置大小lab_icon_account->setPixmap(QPixmap(":/QQ/account_front.png"));//设置图片lab_icon_account->setScaledContents(true);//让图片自适应//创建一个行编辑器   用于账号输入//QLineEdit *edit_account = new QLineEdit(this);//账号输入框相关edit_account->move(130,160);//移动edit_account->resize(200,30);//设置大小edit_account->setPlaceholderText("QQ号码/手机/邮箱");//设置占位符//密码输入框前面的图标QLabel *lab_icon_password = new QLabel(this);//用于放密码前面的图标lab_icon_password->move(96,200);//移动lab_icon_password->resize(30,30);//设置大小lab_icon_password->setPixmap(QPixmap(":/QQ/password_front.png"));//设置图片lab_icon_password->setScaledContents(true);//让图片自适应//创建一个行编辑器    用于密码输入//QLineEdit *edit_password = new QLineEdit(this);//密码输入框相关edit_password->move(130,200);//移动edit_password->resize(200,30);//设置大小edit_password->setPlaceholderText("密码");//设置占位符edit_password->setEchoMode(QLineEdit::Password);//设置显示模式//密码输入框下面的    “自动登录” 按钮QPushButton *btn_automatic_login = new QPushButton("自动登录",this);//创建 “自动登录” 按钮btn_automatic_login->move(127,245);//移动btn_automatic_login->resize(65,20);//设置大小btn_automatic_login->setStyleSheet("background-color:rgb(255,255,255); color:rgb(168,168,168)");//设置按钮颜色//密码输入框下面的    “记住密码” 按钮QPushButton *btn_save_password = new QPushButton("保存密码",this);//创建 “记住密码” 按钮btn_save_password->move(195,245);//移动btn_save_password->resize(65,20);//设置大小btn_save_password->setStyleSheet("background-color:rgb(255,255,255); color:rgb(168,168,168)");//设置按钮颜色//密码输入框下面的   “找回密码” 按钮QPushButton *btn_retrieve_password = new QPushButton("找回密码",this);//创建 “找回密码” 按钮btn_retrieve_password->move(265,245);//移动btn_retrieve_password->resize(65,20);//设置大小btn_retrieve_password->setStyleSheet("background-color:rgb(255,255,255); color:rgb(168,168,168)");//设置按钮颜色//登录按钮//QPushButton *btn_login = new QPushButton("登录",this);//创建登录按钮btn_login->move(130,280);//移动btn_login->resize(95,30);//设置登录按钮大小btn_login->setStyleSheet("background-color:rgb(128,191,255); color:white");//设置登录按钮颜色connect(btn_login,SIGNAL(clicked()),this,SLOT(my_slot_login()));//登录按钮,手动连接信号和自定义的槽函数//取消按钮//QPushButton *btn_cancel = new QPushButton("取消",this);//创建取消按钮btn_cancel->move(btn_login->x()+200-95,btn_login->y());//移动btn_cancel->resize(95,30);//设置登录按钮大小btn_cancel->setStyleSheet("background-color:rgb(128,191,255); color:white");//设置登录按钮颜色connect(btn_cancel,SIGNAL(clicked()),this,SLOT(my_slot_cancel()));//取消按钮,手动连接信号和自定义的槽函数//左下角   “注册账号” 按钮QPushButton *btn_sign_in = new QPushButton("注册账号",this);//创建一个按钮  用于注册账号btn_sign_in->move(10,300);//移动btn_sign_in->resize(65,20);//设置大小btn_sign_in->setStyleSheet("background-color:rgb(255,255,255); color:rgb(168,168,168)");//设置按钮颜色//右下角   “二维码” 按钮QPushButton *btn_two_dimensional_code = new QPushButton(QIcon(":/QQ/two_dimensional_code.png"),"",this);//创建一个按钮  用于扫描二维码btn_two_dimensional_code->move(397,296);//移动btn_two_dimensional_code->resize(27,27);//设置大小//定时器//QTimer *timer = new QTimer(this);//创建一个QTimer
}Widget::~Widget()
{delete ui;
}// “X” 按钮对应的槽函数
void Widget::on_btn_mul_icon_clicked()
{this->close();//点击  “X”  按钮   关闭整个窗口
}//登录按钮  对应的  槽函数
void Widget::my_slot_login()
{if(edit_account->text() == "admin" && edit_password->text() == "123456"){QLabel *lab_login_success = new QLabel("登录成功",this);//创建  “登录成功”  标签lab_login_success->resize(100,edit_account->height());//设置标签大小,与登录按钮高度相同lab_login_success->setStyleSheet("background-color:rgb(220,220,220)");//设置标签颜色lab_login_success->show();//标签显示lab_login_success->setAlignment(Qt::AlignCenter);//设置标签中文本居中显示lab_login_success->move(btn_login->x(),btn_login->y()-lab_login_success->height());//设置标签位置在登录按钮上方//3秒后既关闭标签,还关闭窗口
//        connect(timer, &QTimer::timeout, [&](){  //连接QTimer的timeout信号到关闭标签的槽
//            lab_login_success->close();//close():关闭          hide():隐藏
//        });
//        timer->start(3000);//设定时间并启动定时器       3秒后关闭标签//关闭标签QTimer::singleShot(3000,lab_login_success,SLOT(close()));//仅在3秒后关闭标签}else{QLabel *lab_login_failure = new QLabel("登陆失败",this);//创建  “登录失败”  标签lab_login_failure->resize(100,edit_account->height());//设置标签大小,与登录按钮高度相同lab_login_failure->setStyleSheet("background-color:rgb(220,220,220)");//设置标签颜色lab_login_failure->show();//标签显示lab_login_failure->setAlignment(Qt::AlignCenter);//设置标签中文本居中显示lab_login_failure->move(btn_login->x(),btn_login->y()-lab_login_failure->height());//设置标签位置在登录按钮上方edit_password->clear();//清空  密码  行编辑器中的内容//关闭标签QTimer::singleShot(3000,lab_login_failure,SLOT(close()));//仅在3秒后关闭标签}
}//取消按钮  对应的  槽函数
void Widget::my_slot_cancel()
{//清空  账户和密码  行编辑器中的内容edit_account->clear();//清空  账户  行编辑器中的内容edit_password->clear();//清空  密码  行编辑器中的内容
}//重写鼠标按下事件
void Widget::mousePressEvent(QMouseEvent *event) {// 当按下鼠标左键时记录当前位置if (event->button() == Qt::LeftButton) {dragPosition = event->globalPos();event->accept();}
}//重写鼠标移动事件
void Widget::mouseMoveEvent(QMouseEvent *event) {// 当移动鼠标时移动窗口if (event->buttons() & Qt::LeftButton) {move(this->x() + event->globalPos().x() - dragPosition.x(),this->y() + event->globalPos().y() - dragPosition.y());dragPosition = event->globalPos();event->accept();}
}

        main.cpp文件:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

         实现效果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com