当前位置: 首页 > article >正文

QT作业2

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数

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

头文件:

#ifndef WIDGET_H
#define WIDGET_H

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

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

signals:
    void my_signal1();

public slots:
    void my_slots1();
    void my_slots2();

private:
    Ui::Widget *ui;
    QLabel *lab1;
    QLabel *lab2;
    QLabel *lab3;
    QLineEdit *edit1;
    QLineEdit *edit2;
    QPushButton *btn1;
    QPushButton *btn2;
};
#endif // WIDGET_H

源文件:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置并固定窗口大小
    this->setFixedSize(600,500);
//    //设置窗口的图片
//    this->setWindowIcon(QIcon(":/pictrue/1.jpg"));
//    //设置窗口的标题
//    this->setWindowTitle("登录账号界面");
    this->setWindowFlag(Qt::FramelessWindowHint);


    //创建一个标签类指针同时将父对象设为当前this指针指向的对象w
    lab1 = new QLabel(this);
    //设置标签大小
    lab1->resize(600,150);
    //创建一个动图类指针接收动图
    QMovie *mv = new QMovie(":/pictrue/dt.gif");
    //将动图放入标签中
    lab1->setMovie(mv);
    //让动图动起来
    mv->start();
    //自动适应lab1
    lab1->setScaledContents(true);

    //创建一个标签类指针同时将父对象设为当前this指针指向的对象w
    lab2 = new QLabel(this);
    //设置标签的大小
    lab2->resize(50,50);
    //移动标签的位置
    lab2->move(170,200);
    //设置标签的图片
    lab2->setPixmap(QPixmap(":/pictrue/2.jpg"));
    //自动适应lab2
    lab2->setScaledContents(true);

    //创建一个标签类指针同时将父对象设为当前this指针指向的对象w
    lab3 = new QLabel(this);
    //设置标签的大小
    lab3->resize(50,50);
    //移动标签的位置
    lab3->move(170,260);
    //设置标签的图片
    lab3->setPixmap(QPixmap(":/pictrue/3.jpg"));
    //自动适应lab3
    lab3->setScaledContents(true);

    //创建一个行编辑器类的指针同时将父对象设为当前this指针指向的对象w
    edit1 = new QLineEdit(this);
    //设置行编辑器的大小
    edit1->resize(200,50);
    //移动行编辑器的位置
    edit1->move(220,200);
    //占位
    edit1->setPlaceholderText("账号");

    //创建一个行编辑器类的指针同时将父对象设为当前this指针指向的对象w
    edit2 = new QLineEdit(this);
    //设置行编辑器的大小
    edit2->resize(200,50);
    //移动行编辑器的位置
    edit2->move(220,260);
    //占位
    edit2->setPlaceholderText("密码");
    //设置显示模式
    edit2->setEchoMode(QLineEdit::Password);

    //创建一个按钮类的指针同时设置文本并将父对象设为当前this指针指向的对象w
    btn1 = new QPushButton("登录",this);
    //设置按钮大小
    btn1->resize(140,50);
    //移动按钮的位置
    btn1->move(150,350);
    //设置按钮的颜色
    btn1->setStyleSheet("background-color:rgb(40,200,250)");

    //创建一个按钮类的指针同时设置文本并将父对象设为当前this指针指向的对象w
    btn2 = new QPushButton("取消",this);
    //设置按钮大小
    btn2->resize(140,50);
    //移动按钮的位置
    btn2->move(300,350);
    //设置按钮的颜色
    btn2->setStyleSheet("background-color:rgb(40,200,250)");

    //手动连接信号和自定义的槽函数 基于qt4版的连接  btn2发信号给当前窗口
    connect(btn2,SIGNAL(clicked()),this,SLOT(my_slots1()));

    //手动连接信号和自定义的槽函数 基于qt5版的连接 btn1发信号给当密码编辑器
    connect(btn1,&QPushButton::clicked,this,&Widget::my_slots2);
}

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

//自定义的槽函数
void Widget::my_slots1()
{
    //关闭当前窗口
    this->close();
}

void Widget::my_slots2()
{
    //检查账号密码是否正确
    if(edit1->text() == "admin" && edit2->text() == "123456")
    {
        qDebug() << "登录成功";
        //成功则关闭窗口
        this->close();
    }else{
        qDebug() << "登录失败";
        //失败则清空密码编辑器的内容
        edit2->setText("");
    }
}

主函数文件:

#include "widget.h"

#include <QApplication>

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

运行结果:

思维导图:


http://www.kler.cn/news/162545.html

相关文章:

  • Scala 从入门到精通
  • 【前端】没有了element时,怎么实现一个自己的form表单组件和表单校验(用法参考el-form)
  • 这些接口自动化测试工具如果不知道,就真out了!
  • unity 2d 入门 飞翔小鸟 小鸟跳跃 碰撞停止挥动翅膀动画(十)
  • 机器学习-分类问题
  • Tmux中使用Docker报错 - 解决方案
  • Windows下使用CMD修改本地IP
  • SQL自学通之简介
  • PyQt6 QTimeEdit时间控件
  • YOLOv5独家原创改进:SPPF自研创新 | SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积提升感受野
  • 7天用Go实现分布式缓存
  • 简谈MySQL的binlog模式
  • ALTERNET STUDIO 9.1 Crack
  • 啃下这50道笔试题,你就是SQL专家!(附答案,收藏备用)
  • 元宇宙vr党建云上实景展馆扩大党的影响力
  • 将 ONLYOFFICE 协作空间的公共房间嵌入到网页
  • 复杂sql分析 以及 索引合并
  • 使用异或查找数组中出现奇数次的唯一或唯二数字
  • Vue.directive
  • Python 数据分析:日期型数据的玩转之道
  • 混合预编码(Hybrid Precoding)的全连接结构与子连接结构
  • 什么是自动化测试框架?常用的自动化测试框架有哪些?
  • Springboot之配置文件(.yml)【搬代码】
  • 基于Docker安装Mysql:5.5
  • filter过滤器
  • ES6之Symbol
  • 雷达点云数据.pcd格式转.bin格式
  • 经典神经网络——ResNet模型论文详解及代码复现
  • 5G承载网和大客户承载的演进
  • CFS三层靶机内网渗透