2024.5.7

//头文件

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QTextToSpeech>
#include <QString>
#include <QtDebug>
#include <QIcon>
#include <QMovie>
#include <cstring>

QT_BEGIN_NAMESPACE
namespace Ui { class MyWidget; }
QT_END_NAMESPACE

class MyWidget : public QWidget
{
    Q_OBJECT

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

    QLabel *lab1,*lab2,*lab3;
    QLineEdit *line1,*line2;
    QPushButton *btn1;
public slots:
    void btn1_clicked();
    void btn1_perception1();
    void btn1_perception2();
private:
    Ui::MyWidget *ui;
};
#endif // MYWIDGET_H

 

//源文件

#include "mywidget.h"
#include "ui_mywidget.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::MyWidget)
{
    ui->setupUi(this);
    //设置窗口大小
    this->resize(400,560);
    //设置窗口图标和标题
    this->setWindowTitle("QQ");
    this->setWindowIcon(QIcon(":/pictrue/qq.png"));
    //设置固定窗口大小
    this->setFixedSize(400,560);
    //设置窗口去头部
    this->setWindowFlag(Qt::FramelessWindowHint);

    //设置窗口的背景
    lab1 = new QLabel(this);
    //设置文本大小
    lab1->resize(400,560);
    //设置动图
    QMovie *mv = new QMovie(":/pictrue/10.gif");

    //设置lab1自适应 + 动图放入lab1
    lab1->setMovie(mv);
    //设置动图运动
    mv->start();
    lab1->setScaledContents(true);
    //设置头像框 152*82
    lab2 = new QLabel(this);
    //设置头像框大小和位置
    lab2->resize(100,100);
    lab2->move(152,82);
    //设置头像框为圆形
    lab2->setStyleSheet("border-radius:50%");
    //设置头像自适应
    lab2->setScaledContents(true);
    //设置头像框头像
    //lab2->setPixmap(QPixmap(":/pictrue/15.gif"));
    QMovie *mv2 = new QMovie(":/pictrue/15.gif");
    lab2->setMovie(mv2);
    mv2->start();

    //设置账号文本
    line1 = new QLineEdit(this);
    //设置账号文本位置和大小   41*210   310*60
    line1->resize(310,50);
    line1->move(41,210);
    //设置文本背景色,边角圆弧
    line1->setStyleSheet("background-color:white;border-radius:10px;font:bold 20px");
    //设置文本提示(占位)
    line1->setPlaceholderText("输入QQ号");

    //设置密码文本
    line2 = new QLineEdit(this);
    //设置密码文本位置大小
    line2->resize(310,50);
    line2->move(41,275);
    //设置文本背景色和边角圆弧  41*402
    line2->setStyleSheet("background-color:white;border-radius:10px;font:bold 20px");
    //设置文本提示(占位)
    line2->setPlaceholderText("输入QQ密码");
    //设置为密码模式
    line2->setEchoMode(QLineEdit::Password);

    //设置按钮
    btn1 = new QPushButton("登录",this);
    //设置按钮位置和大小
    btn1->resize(310,50);
    btn1->move(41,400);
    //设置按钮的颜色,背景色,字体大小,居中
    btn1->setStyleSheet("background-color:rgb(0,141,235);color:white;font:bold 20px;border-radius:10px;text-align:center");


    //设置信号与槽
    connect(this->btn1,&QPushButton::clicked,this,&MyWidget::btn1_clicked);
    connect(this->line1,&QLineEdit::textChanged,this,&MyWidget::btn1_perception1);
    connect(this->line2,&QLineEdit::textChanged,this,&MyWidget::btn1_perception2);
}

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

void MyWidget::btn1_clicked(){
    QLabel *lab = new QLabel;
    lab->resize(130,130);
    lab->setPixmap(QPixmap(":/pictrue/cancel.png"));
    lab->setStyleSheet("text-align:20px");
    lab->setScaledContents(true);
    if(this->line1->text()=="2024021" && this->line2->text()=="123456"){
            lab->setText("登陆成功");
            lab->show();
            this->close();
    }else{
        line1->clear();
        line2->clear();
        lab->setText("账号、密码错误");
        lab->show();

    }
}
void MyWidget::btn1_perception1(){
    if(this->line1->text().length()<6 || this->line2->text().length()<6){
        btn1->setStyleSheet("background-color:rgb(80,80,80);color:white;font:bold 20px;border-radius:10px;text-align:center");
        btn1->setEnabled(false);
    }else{
        btn1->setStyleSheet("background-color:rgb(0,141,235);color:white;font:bold 20px;border-radius:10px;text-align:center");
        btn1->setEnabled(true);
    }
}
void MyWidget::btn1_perception2(){
    if(this->line2->text().length()<6 || this->line1->text().length()<6){
         btn1->setStyleSheet("background-color:rgb(80,80,80);color:white;font:bold 20px;border-radius:10px;text-align:center");
        btn1->setEnabled(false);
    }else{
        btn1->setStyleSheet("background-color:rgb(0,141,235);color:white;font:bold 20px;border-radius:10px;text-align:center");
        btn1->setEnabled(true);
    }
}

实现效果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/600001.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

js浏览器请求,post请求中的参数形式和form-data提交数据时数据格式问题(2024-05-06)

浏览器几种常见的post请求方式 Content-Type 属性规定在发送到服务器之前应该如何对表单数据进行编码。 默认表单数据会编码为 "application/x-www-form-urlencoded" post请求的参数一般放在Body里。 Content-Type&#xff08;内容类型&#xff09;&#xff0c;一般…

截图工具Snipaste:不仅仅是截图,更是效率的提升

在数字时代&#xff0c;截图工具已成为我们日常工作和生活中不可或缺的一部分。无论是用于工作汇报、学习笔记&#xff0c;还是日常沟通&#xff0c;一款好用的截图工具都能大大提升我们的效率。今天&#xff0c;我要向大家推荐一款功能强大且易于使用的截图软件——Snipaste。…

CRC校验原理及步骤

文章目录 CRC定义&#xff1a;CRC校验原理&#xff1a;CRC校验步骤&#xff1a; CRC定义&#xff1a; CRC即循环冗余校验码&#xff0c;是数据通信领域中最常用的一种查错校验码&#xff0c;其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查&#xff08;CRC&#…

JUC-synchronized练习-交替打印ABC

今天来练习一下synchronized 简单来利用synchronized实现一个字符串的交替打印 主要的实现设置一个全局的变量state&#xff0c;线程执行通过不断累加state&#xff0c;根据state对三取余的结果来判断该线程是否继续执行还是进入等待。并通过synchronized锁住一个共享变量loc…

设计模式之模板模式TemplatePattern(五)

一、模板模式介绍 模板方法模式&#xff08;Template Method Pattern&#xff09;&#xff0c;又叫模板模式&#xff08;Template Pattern&#xff09;&#xff0c; 在一个抽象类公开定义了执行它的方法的模板。它的子类可以更需要重写方法实现&#xff0c;但可以成为典型类中…

学习R语言第五天

文章目录 语法学习创建数据的方式绘制图形的方式图形添加颜色如何操作数据的方式数据进行验算的判断加付值的方式修改变量名称的方式判断是否存在缺失值在计算的方式忽略缺失值通过函数的方式忽略缺失值日期处理的方式字符串转化成日期的方式格式化数据框中数据返回当前的日期的…

保研面试408复习 1——操作系统、计网、计组

文章目录 1、操作系统一、操作系统的特点和功能二、中断和系统调用的区别 2、计算机组成原理一、冯诺依曼的三个要点二、MIPS&#xff08;每秒百万条指令&#xff09;三、CPU执行时间和CPI 3、计算机网络一、各个层常用协议二、网络协议实验——数据链路层a.网络速率表示b.数据…

《十八》QThread多线程组件

本章将重点介绍如何运用QThread组件实现多线程功能。 多线程技术在程序开发中尤为常用&#xff0c;Qt框架中提供了QThread库来实现多线程功能。当你需要使用QThread时&#xff0c;需包含QThread模块&#xff0c;以下是QThread类的一些主要成员函数和槽函数。 成员函数/槽函数 …

Linux内核之获取文件系统超级块:sget用法实例(六十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

EMAIL-PHP功能齐全的发送邮件类可以发送HTML和附件

EMAIL-PHP功能齐全的发送邮件类可以发送HTML和附件 <?php class Email { //---设置全局变量 var $mailTo ""; // 收件人 var $mailCC ""; // 抄送 var $mailBCC ""; // 秘密抄送 var $mailFrom ""; // 发件人 var $mailSubje…

如何查看慢查询

4.2 如何查看慢查询 知道了以上内容之后&#xff0c;那么咱们如何去查看慢查询日志列表呢&#xff1a; slowlog len&#xff1a;查询慢查询日志长度slowlog get [n]&#xff1a;读取n条慢查询日志slowlog reset&#xff1a;清空慢查询列表 5、服务器端优化-命令及安全配置 安…

6.Nginx

Nginx反向代理 将前端发送的动态请求有Nginx转发到后端服务器 那为何要多一步转发而不直接发送到后端呢&#xff1f; 反向代理的好处&#xff1a; 提高访问速度&#xff08;可以在nginx做缓存&#xff0c;如果请求的是同样的接口地址&#xff0c;这样就不用多次请求后端&#…

本地运行AI大模型简单示例

一、引言 大模型LLM英文全称是Large Language Model&#xff0c;是指包含超大规模参数&#xff08;通常在十亿个以上&#xff09;的神经网络模型。2022年11月底&#xff0c;人工智能对话聊天机器人ChatGPT一经推出&#xff0c;人们利用ChatGPT这样的大模型帮助解决很多事情&am…

AUTOSAR中EcuM、ComM和CanNm的关联

ComM的内外部唤醒 ComM可以通过NM保持网络的唤醒&#xff0c;同时也可以通过SM激活通信&#xff0c;总之就像一个通信的总管。 下面通过两种唤醒源来解释ComM的状态机。 1、内部唤醒 ① 当ComM上电初始化时会首先进入NO COMMUNICATION状态&#xff0c;在该状态下ComM会持续循…

Linux学习之路 -- 文件 -- 文件描述符

前面介绍了与文件相关的各种操作&#xff0c;其中的各个接口都离不开一个整数&#xff0c;那就是文件描述符&#xff0c;本文将介绍文件描述符的一些相关知识。 目录 <1>现象 <2>原理 文件fd的分配规则和利用规则实现重定向 <1>现象 我们可以先通过prin…

如何根据IP获取国家省份城市名称PHP免费版

最近项目遇到需要根据IP获取用户国家功能需求&#xff0c;网上找了一下&#xff0c;很多API接口都需要付费&#xff0c;考虑为公司节约成本&#xff0c;就取找找有没有开源的 github 上面那个包含多种语言&#xff0c;下面这个只有php&#xff0c;用法很简单 $ip 114.114.114…

视频素材哪个app好?8个视频素材库免费使用

视频内容已成为现代传播中不可或缺的一部分&#xff0c;具备卓越的视频素材对于提升任何媒体作品的质量和吸引力尤为关键。这里列举的一系列精挑细选的全球视频素材网站&#xff0c;旨在为您的商业广告、社交媒体更新或任何其他类型的视觉项目提供最佳支持。 1. 蛙学府&#x…

数据结构复习/学习9--二叉树

一、堆与完全二叉树 1.堆的逻辑与物理结构 2.父节点与子节点的下标 3.大小根堆 二、堆的实现&#xff08;大根堆为例&#xff09; 注意事项总结&#xff1a; 注意堆中插入与删除数据的位置和方法与维持大根堆有序时的数据上下调整 三、堆排序 1.排升序建大堆效率高 注意事项…

VUE v-for 数据引用

VUE 的数据引用有多种方式。 直接输出数据 如果我们希望页面中直接输出数据就可以使用&#xff1a; {{ pageNumber }}双括号引用的方式即可。 在 JavaScript 中引用 如果你需要直接在代码中使用&#xff0c;直接使用变量名就可以了。 上面这张小图&#xff0c;显示了引用的…

【计组OS】访存过程以及存储层次化结构

苏泽 本专栏纯个人笔记作用 用于记录408 学习的笔记记录&#xff08;敲了两年码实在不习惯手写笔记了&#xff09; 如果能帮助到大家当然最好 但由于是工作后退下来备考 很多说法和想法都会结合实际开发的思想 可能不是那么的纯粹应试哈 希望大家挑选自己喜欢的口味食用…