Day47

news2024/9/24 9:22:04

思维导图

在这里插入图片描述

练习

实现登录框中,当登录成功时,关闭登录界面,并跳转到其他界面
second.h

#ifndef SECOND_H
#define SECOND_H

#include <QWidget>

namespace Ui {
class Second;
}

class Second : public QWidget
{
    Q_OBJECT

public:
    explicit Second(QWidget *parent = 0);
    ~Second();

public slots:
    void jump_slot();       //定义有关处理跳转信号的槽函数

private:
    Ui::Second *ui;
};

#endif // SECOND_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>           //信息调试类
#include <QIcon>            //图标类
#include <QPushButton>      //按钮类
#include <QLabel>           //标签类
#include <QLineEdit>
#include <QCheckBox>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public slots:
    void slot_login();
    void slot_cancel();

signals:
    void jump();

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
    QLineEdit *edit1;
    QLineEdit *edit2;
    QPushButton *btn_login;
    QPushButton *btn_cancel;
};

#endif // WIDGET_H

main.cpp

#include "widget.h"
#include "second.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;       //第一个界面
    w.show();       //展示第一个界面

    Second s;       //第二个界面

    //将第一个界面的信号与第二个界面的槽函数进行连接
    QObject::connect(&w,&Widget::jump,&s,&Second::jump_slot);

    return a.exec();
}

second.cpp

#include "second.h"
#include "ui_second.h"

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

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

//处理跳转信号函数对应的槽函数
void Second::jump_slot()
{
    this->show();
}

widget.cpp

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

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

    //设置固定尺寸
    this->setFixedSize(540,410);
    //设置窗口标题
    this->setWindowTitle("HQYJ");
    //设置窗口图标
    this->setWindowIcon(QIcon("D:/software/QT/Tools/QtCreator/bin/C++/day1/homework/icon/login.png"));

    //调用标签的构造函数,构造时顺便给定文本内容以及父组件
    QLabel *lab1 = new QLabel(this) ;
    lab1->resize(540,160);
    //更改标签中的内容
    lab1->setPixmap(QPixmap("D:/software/QT/Tools/QtCreator/bin/C++/day1/homework/icon/logo.png"));
    //设置内容为自适应
    lab1->setScaledContents(true);

    //调用标签的构造函数,构造时顺便给定文本内容以及父组件
    QLabel *lab3 = new QLabel(this) ;
    lab3->resize(40,40);
    //更改标签中的内容
    lab3->setPixmap(QPixmap("D:/software/QT/Tools/QtCreator/bin/C++/day1/homework/icon/userName.jpg"));
    //设置内容为自适应
    lab3->setScaledContents(true);
    //移动组件
    lab3->move(100,180);
    //调用行编辑器的构造函数
    edit1 = new QLineEdit("QQ号/微信/邮箱",this);
    //重新设置大小
    edit1->resize(300,40);
    //移动
    edit1->move(150,180);

    //调用标签的构造函数,构造时顺便给定文本内容以及父组件
    QLabel *lab4 = new QLabel(this) ;
    lab4->resize(40,40);
    //更改标签中的内容
    lab4->setPixmap(QPixmap("D:/software/QT/Tools/QtCreator/bin/C++/day1/homework/icon/passwd.jpg"));
    //设置内容为自适应
    lab4->setScaledContents(true);
    //移动组件
    lab4->move(100,240);
    //调用行编辑器的构造函数
    edit2 = new QLineEdit("密码",this);
    //重新设置大小
    edit2->resize(edit1->size());
    //移动
    edit2->move(150,240);
    //将文本内容设置密文模式
    edit2->setEchoMode(QLineEdit::Password);




    //调用按钮构造函数,在构造按钮的同时顺便加上文本内容以及父组件
    QPushButton *btn1 = new QPushButton("找回密码",this);
    btn1->resize(70,30);
    btn1->move(380,290);
    //btn1->setStyleSheet("border-style:none;");

    QPushButton *btn2 = new QPushButton("注册账号",this);
    btn2->resize(70,30);
    btn2->move(15,370);
    //btn2->setStyleSheet("border-style:none;");

    QPushButton *btn3 = new QPushButton(this);
    btn3->resize(30,30);
    btn3->setIcon(QIcon("D:/software/QT/Tools/QtCreator/bin/C++/day1/homework/icon/QRcode.png"));
    btn3->move(500,370);

    btn_login = new QPushButton("登录",this);
    btn_login->resize(150,40);
    btn_login->move(100,330);

    btn_cancel = new QPushButton("取消",this);
    btn_cancel->resize(150,40);
    btn_cancel->move(300,330);

    QCheckBox *cbox1 = new QCheckBox("自动登录", this);
    cbox1->resize(90,30);
    cbox1->move(100,290);

    QCheckBox *cbox2 = new QCheckBox("记住密码", this);
    cbox2->resize(90,30);
    cbox2->move(240,290);

    QObject::connect(btn_cancel, SIGNAL(clicked()),this , SLOT(slot_cancel()));
    QObject::connect(btn_login, &QPushButton::clicked, this, &Widget::slot_login);


}


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

//处理登录按钮的槽函数
void Widget::slot_login()
{
    //QString userName = ui->userNameEdit->text();    //获取账户
    //QString pwd= ui->pwdEdit->text( );
    QString userName = edit1->text();    //获取账户
    QString pwd= edit2->text();


    if(userName == "admin" && pwd == "123456")
    {
        qDebug() << "登录成功";
        //发射跳转型号
        emit Widget::jump();
        //关闭当前界面
        //this->close();
    }
    else
        qDebug() << "登录失败";
}

//处理取消按钮的槽函数
void Widget::slot_cancel()
{
    this->close();
}



在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab绘图时的几个小技巧(修改刻度线长度、添加/去掉右边和上面的轴与刻度线、出图时去掉旁边的空白部分)

set(gca,TickLength,[0.005,0.035]); %修改坐标轴刻度线的长度 box on; %开启右面和上面的坐标轴 box off;%关闭右面和上面的坐标轴 set(gca, LooseInset, [0,0,0,0]);%删除掉图旁边多余的空白部分首先随便出一张图 我想让刻度线更长或更短一些&#xff1a; 我想让右侧和上面…

OpenCV的安装与配置指南(Windows环境,Python语言)

OpenCV 的安装与配置指南&#xff08;Windows环境&#xff0c;Python语言&#xff09; 导语一、安装 Python 二、安装 OpenCV 库三、配置 OpenCV 环境变量四、验证 OpenCV 安装总结 导语 OpenCV 是一个功能强大的计算机视觉库&#xff0c;广泛应用于图像处理和计算机视觉领域。…

第十二章 elk

1、ELK可以帮助我们解决哪些问题 日志分布在多台不同的服务器上,业务一旦出现故障,需要一台台查看日志 单个日志文件巨大,无法使用常用的文本工具分析,检索困难; 2、架构设计分析 Filebeat和Logstash ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、i…

MySQL入门必备:Linux中部署MySQL环境的四种方式详解

目录 一、仓库安装 二、本地安装 三、Docker中安装 四、源码安装 一、仓库安装 首先需要下载mysql软件包&#xff1a; 1、进入MySQL官网 2、进入MySQL社区版下载 3、使用yum方式下载MySQL 4、下载对应版本的软件包 5、这里可以不登录直接下载软件包 6、复制下载链接 7、然…

Perfetto详细解析

一、Perfetto基础 1、Perfetto介绍 Perfetto 是一个生产级的开源堆栈&#xff0c;用于提高性能 仪器和痕量分析。与 Systrace 不同&#xff0c;它提供数据源超集&#xff0c;可以用 protobuf 编码的二进制流形式记录任意长度的跟踪记录。可以将Perfetto理解为systrace的升级版…

Python——爬虫入门

爬虫的流程 第一步:获取网页内容 浏览器访问网页时也是一样&#xff0c;都是先发个请求获取网页内容&#xff0c;但是浏览器多了个渲染的步骤。 程序获取的内容都是网页源代码 第二步:解析网页内容 第三步:储存或分析数据 要做数据集就存起来&#xff0c;要做数据分析就形…

【Matlab】GRNN神经网络遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值

上一篇博客介绍了BP神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值&#xff0c;神经网络用的是BP神经网络&#xff0c;本篇博客将BP神经网络替换成GRNN神经网络&#xff0c;希望能帮助大家快速入门GRNN网络。 1.背景条件 要求&#xff1a;对于未知模型&#xff08;…

scratch 角色追踪

scratch 角色追踪 本程序中一个角色移动到随机位置和方向后向前移动&#xff0c;碰到边缘反弹&#xff1b;另一个角色跟随前一个角色&#xff0c;两个角色接触后前者重新取随机位置。 程序内容如下

Linux——进程信号详解

目录 一.进程信号的理解 1.1定义&#xff1a; 1.2举例&#xff1a; 1.3总结&#xff1a; 二.进程信号地使用&#xff1a; 2.1信号种类&#xff1a; 2.2而操作系统向进程发送信号地方式有四种&#xff1a; 2.2.1以键盘的方式向进程发送信号 接下来介绍一个系统调用函数sign…

【项目】C++实现高并发内存池

文章目录 一、项目介绍1.1 项目原型1.2 池化技术1.3 内存池主要解决的问题1.4 malloc理解 二、定长内存池实现三、高并发内存池的三层申请内存框架设计3.1 thread cache层的设计3.1.1 thread cache整体框架3.1.2 哈希桶映射对齐规则3.1.3 thread cacheTLS无锁访问 3.2 central …

【剑指offer】10. 矩阵中的路径(java)

文章目录 矩阵中的路径描述示例1示例2思路完整代码 矩阵中的路径 描述 请设计一个函数&#xff0c;用来判断在一个n乘m的矩阵中是否存在一条包含某长度为len的字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始&#xff0c;每一步可以在矩阵中向左&#xff0c;向右&…

springboot切面应用

1、切面场景 无侵入的实现功能增强 2、实现 切面类的实现 需要使用注解Aspect和Componet来实现&#xff0c; 环绕通知的作用在返回的student的sname后面拼接around字符串。 后置通知的作用在入参后面拼接idididdi&#xff0c;然后打印日志 Aspect Component public class…

English Learning - L3 纠音 W9 Lesson7-8 Ted Living Beyond Limits 2023.7.4 周二

朗读内容&#xff1a; Lesson 7-8 Day 52 - 60 句子 Ted Living Beyond Limits 23-50

使用Python爬虫和数据可视化,揭示人口大国历年人数的变迁

前言 人口大国通常在全球人口排名中位居前列&#xff0c;其人口数量远远超过其他国家。而印度和中国这两个国家的人口数量均已经超过14亿&#xff0c;而当前全球的人口总数也不过刚刚突破80亿而已&#xff0c;妥妥的天花板级别存在。或许是中国和印度在人口方面的表现太过“耀…

【CANopen】周立功轻松入门CANopen笔记

前言 想学习些新东西了&#xff0c;原本想直接学学Ethercat&#xff0c;但是简单看了看对象字典啥的概念一头雾水的&#xff0c;决定先从CANopen开始&#xff0c;Ethercat看着头疼。Etehrcat和CANopen有挺多类似的地方。感谢ZLG的这个入门笔记&#xff0c;我似乎是看懂了些&am…

非主流币波段策略

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

数据合并--Pandas

1. 键匹配合并:merge()函数 1.1 函数功能 合并DataFrame或者命名的Series&#xff0c;命名的Series被视为单列的DataFrame 1.2 函数语法 pandas.merge(left, right, howinner, onNone, left_onNone, right_onNone, left_indexFalse, right_indexFalse, sortFalse, suffixes…

最长公共子序列LCA

最长连续公共子序列 题目链接:3692. 最长连续公共子序列 - AcWing题库 /*解法:定义dp[i1][j1]为以a[i]结尾的字符串和b[j]结尾的字符串的最长连续公共子序列那么对于a[i] b[j]的时候 dp[i1][j1] dp[i][j]1否则为0 其他就是细枝末节 */ #include<iostream> #include<…

【shiro】springboot整合shiro

springboot整合shiro&#xff0c;实现用户登录认证&#xff0c;权限校验及rememberMe 1.数据库准备 user 用户表 CREATE TABLE user (id bigint NOT NULL,name varchar(30) DEFAULT NULL,pwd varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,ri…

《Java核心技术大会2023》——AIC送书第一期

共同深入探讨 Java 生态&#xff01;直播预约&#xff1a;视频号“IT阅读排行榜” 大会简介 人工智能在22年、23年的再次爆发让Python成为编程语言里最大的赢家&#xff1b;云原生的持续普及令Go、Rust等新生的语言有了进一步叫板传统技术体系的资本与底气。我们必须承认在近…