DAY2,Qt(继续完善登录框,信号与槽的使用 )

1.继续完善登录框,当登录成功时,关闭登录界面,跳转到新的界面中,来回切换页面;

---mychat.h  chatroom.h---两个页面头文件
#ifndef MYCHAT_H
#define MYCHAT_H#include <QWidget>
#include <QDebug>  //打印信息
#include <QIcon> //图标
#include <QPushButton>  //按钮
#include <QLineEdit> //行编辑器类
#include <QLabel>  //标签类class Mychat : public QWidget
{Q_OBJECTpublic:Mychat(QWidget *parent = nullptr);~Mychat();QLabel *lab1;  //标签类,设置背景QLabel *lab2;  //设置账号图标QLabel *lab3;  //设置密码图标QLineEdit *edit1;  //行编辑器类,设置明文账号QLineEdit *edit2;  //设置密文密码QPushButton *but1;  //按钮类,设置登录按钮QPushButton *but2;  //设置取消按钮signals:void my_signal();void login_jump();  //登录跳转信号public slots:void login_slot();  //发送跳转信号槽void cancle_slot();void returnjump_slot();  //接收返回信号槽};
#endif // MYCHAT_H
#ifndef CHATROOM_H
#define CHATROOM_H#include <QWidget>namespace Ui {
class Chatroom;
}class Chatroom : public QWidget
{Q_OBJECTpublic:explicit Chatroom(QWidget *parent = nullptr);~Chatroom();signals:void return_jump(); //返回跳转信号public slots:void loginjump_slot();  //接收登录跳转槽private slots:void on_returnjump_clicked();  //发送返回跳转信号槽private:Ui::Chatroom *ui;
};#endif // CHATROOM_H

 

---mychat.cpp  chatroom.cpp---两个页面源文件
#include "mychat.h"Mychat::Mychat(QWidget *parent): QWidget(parent)
{//对组件界面的设置qDebug()<<this->size();this->setFixedSize(this->size());  //固定界面尺寸this->setWindowOpacity(0.9);  //透明度//设置窗口this->setWindowTitle(" 轻松一刻的你");  //窗口内容this->setWindowIcon(QIcon(":/qt_icon/qie.png"));  //窗口图标//设置界面背景,lab1lab1 = new QLabel;lab1->setParent(this);  //将当前组件设置为父组件lab1->resize(700,200);  //更改标签大小lab1->setPixmap(QPixmap(":/qt_icon/background.jpg"));lab1->setScaledContents(true);  //自动适应空间//设置登录页面//账号图标lab2lab2 = new QLabel;lab2->setParent(this);  //将当前组件设置为父组件//lab2->setStyleSheet("background-color:blue;");  //参考lab2->resize(50,40);  //设置大小lab2->move(170,250);  //位置lab2->setPixmap(QPixmap(":/qt_icon/name.png"));lab2->setScaledContents(true);  //自动适应空间//密码图标lab3lab3 = new QLabel(this);//lab3->setStyleSheet("background-color:blue;");  //参考lab3->resize(lab2->size());  //设置大小lab3->move(170,320);  //位置lab3->setPixmap(QPixmap(":/qt_icon/pwd.png"));lab3->setScaledContents(true);  //自动适应空间//行文本设置//输入账号,edit1edit1 = new QLineEdit(this);edit1->move(260,250);  //位置qDebug()<<edit1->size();  //获取大小edit1->resize(220,40);  //设置大小edit1->setPlaceholderText("账号");  //占位提示//输入密码,edit2edit2 = new QLineEdit(this);edit2->move(260,320);  //位置edit2->resize(edit1->size());  //设置大小edit2->setEchoMode(QLineEdit::Password);  //设置密文edit2->setPlaceholderText("密码");  //占位提示//登录按钮but1but1 = new QPushButton(this);qDebug()<<but1->size();  //获取大小//but1->setStyleSheet("background-color:red;");  //参考but1->move(340,400);  //位置but1->resize(70,40);  //设置大小but1->setText("登录");  //文本but1->setIcon(QIcon(":/qt_icon/login.png"));//取消按钮but2but2 = new QPushButton(this);//but2->setStyleSheet("background-color:red;");  //参考but2->move(440,400);  //位置but2->resize(but1->size());  //设置大小but2->setText("取消");  //文本but2->setIcon(QIcon(":/qt_icon/cancle.png"));//取消按钮函数连接my_slot(),qt4// connect(btn3,SIGNAL(clicked()),this,SLOT(my_slot()));  //与自定义槽函数相连connect(but2,SIGNAL(clicked()),this,SLOT(cancle_slot()));//登录按钮函数连接my_slot1(),qt5connect(but1,&QPushButton::clicked,this,&Mychat::login_slot);}Mychat::~Mychat()
{
}//取消按钮槽函数
void Mychat::cancle_slot()
{this->close();
}//登录按钮槽函数
void Mychat::login_slot()
{if(edit1->text() == "admin" && edit2->text() == "123456"){qDebug()<<"登陆成功!";emit login_jump();this->close();}else{qDebug()<<"登陆失败,请重新登录!";edit2->clear();}
}//接收返回信号槽
void Mychat::returnjump_slot()
{this->show();
}
#include "chatroom.h"
#include "ui_chatroom.h"Chatroom::Chatroom(QWidget *parent) :QWidget(parent),ui(new Ui::Chatroom)
{ui->setupUi(this);
}Chatroom::~Chatroom()
{delete ui;
}void Chatroom::loginjump_slot()  //接收登录信号槽
{this->show();
}void Chatroom::on_returnjump_clicked()  //发送疯返回信号槽
{emit return_jump();this->close();
}

 

---main.cpp---两个页面测试文件
#include "mychat.h"
#include "chatroom.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Mychat w;w.show();Chatroom c;  //实例化chatroom界面QObject::connect(&w,&Mychat::login_jump,&c,&Chatroom::loginjump_slot);  //连接登录调转信号和槽QObject::connect(&c,&Chatroom::return_jump,&w,&Mychat::returnjump_slot);  //连接返回调转信号和槽return a.exec();
}

 

 

2.新建一个工程文件,将默认提供的代码加上注释信息;

工程管理文件---

 

头文件---

 

源文件---

 

主函数---

3.今日份Qt思维导图;

 

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

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

相关文章

P5721 【深基4.例6】数字直角三角形

【深基4.例6】数字直角三角形 题目描述 给出 n n n&#xff0c;请输出一个直角边长度是 n n n 的数字直角三角形。所有数字都是 2 2 2 位组成的&#xff0c;如果没有 2 2 2 位则加上前导 0 0 0。 输入格式 输入一个正整数 n n n。 输出格式 输出如题目要求的数字直…

Linux | cramfs下载、安装

Linux | cramfs下载、安装 1.下载 cramfs-1.1.tar.gz 2.编译、安装 [fly@752fac4b02e9 eeasy]$ tar zxf cramfs-1.1.tar.gz [fly@752fac4b02e9 eeasy]$ cd cramfs-1.1/ [fly@752fac4b02e9 cramfs-1.1]$ ls COPYING cramfsck.c GNUmakefile linux mkcramfs.c NOTES READ…

STC12C5A60S2 单片机串口2的通信功能测试

根据手册说明&#xff0c;STC12C5A60S2 系列单片机可以直接使用 reg51.h 的头文件&#xff0c;只是在用到相应的特殊功能寄存器时&#xff0c;要做相应的定义即可。 笔记来自视频教程链接: https://www.bilibili.com/video/BV1Qq4y1Z7iS/?spm_id_from333.880.my_history.page…

EtherNet/IP转Modbus网关以连接AB PLC

本案例为西门子S7-1200 PLC通过捷米特Modbus转EtherNet/IP网关捷米特JM-EIP-RTU连接AB PLC的配置案例。 网关分别从ETHERNET/IP一侧和MODBUS一侧读写数据&#xff0c;存入各自的缓冲区&#xff0c;网关内部将缓冲区的数据进行交换&#xff0c;从而实现两边数据的传输。 网关做为…

Vlan端口隔离(第二十四课)

一、端口隔离 1、端口隔离技术概述 1)端口隔离技术出现背景:为了实现报文之间的二层隔离,可以将不同的端口加入不同的VLAN,但这样会浪费有限的VLAN ID资源。 2)端口隔离的作用:采用端口隔离功能,可以实现同一VLAN内端口之间的隔离。 3)如何实现端口隔离功能:只需要…

tcl学习之路(一)(Vivado与Tcl)

学习第一步&#xff1a;安装tcl编译软件 点击这里进入activestate的官网&#xff0c;下载你喜欢的操作系统所需的安装包。这里我下载的是windows下的安装包。一步一步安装即可。   那么&#xff0c;安装后&#xff0c;我们可以在开始的菜单栏处看到三个应用程序。      …

uni-app 使用uni.request封装发送api请求文档服务器请求导航守卫

前言 刚刚接触uni-app时候想着直接使用axios发请求&#xff0c;可以发送成功但是请求头有点问题 后面发现教程都是使用escookrequest-miniprogram三方包发送请求-是没有问题 为什么不直接用uni.request&#xff08;&#xff09;发送请求&#xff0c;是因为每次请求都要写一次…

Cisco IOS操作(红茶三杯CCNA)

Cisco路由器组件 CPU&#xff1a;执行指令 RAM&#xff1a;断电内容丢失 - 运行操作系统 - 运行配置文件 - IP路由表 - ARP缓存 - 数据包缓存区 ROM&#xff1a;保存开机自检软件&#xff0c;存储路由器的启动引导程序 - bootstrap指令 - 基本的自检软件 - 迷你版IOS 非易失RAM…

STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL库开发)

时钟配置HSI主频配置64M 勾选打开8个通道的ADC 使能连续转换模式 添加DMA DMA模式选择循环模式 使能DMA连续请求 采样时间配置160.5 转换次数为8 配置好8次转换的顺序 配置好串口&#xff0c;选择异步模式配置好需要的开发环境并获取代码 修改main.c 串口重定向 #include &…

从上到下打印二叉树

题目描述 从上到下打印出二叉树的每个节点&#xff0c;同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回&#xff1a; [3,9,20,15,7] 算法思想 建立一个vector数组ret用来当做返回的结果数组&#xff0c;建立一个队列用来接收二叉树…

ELK环境搭建——概况

Elastic Stack,核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。 目录 一:Elasticsearch: 1.1 从数据中探寻各种问题的答案 1.1.1 定义您自己的搜索方式

毓恬冠佳冲刺上市:打破汽车天窗外商垄断,长安汽车为其主要客户

撰稿|行星 来源|贝多财经 7月23日&#xff0c;上海毓恬冠佳科技股份有限公司&#xff08;以下简称“毓恬冠佳”&#xff09;在深圳证券交易所的审核状态变更为“已问询”。据贝多财经了解&#xff0c;毓恬冠佳于2023年6月27日递交招股书&#xff0c;准备在创业板上市。 本次冲…

docker入门讲解

目录 第 1 章 Docker核心概念与安装 为什么使用容器? Docker是什么 Docker设计目标 Docker基本组成

pycharm中运行py文件时,报错:找不到自己编写的包等目录问题ModuleNotFoundError: No module named ‘xxx‘

【问题描述】&#xff1a;pycharm中运行py文件时&#xff0c;报错&#xff1a;找不到自己编写的包等目录问题 【报错】: ModuleNotFoundError: No module named ‘xxx’ ERROR: file not found 【问题定位】&#xff1a;运行的py文件和用到的包或者数据不在同一个文件目录下时…

基于Java+SpringBoot+vue前后端分离网上租赁系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Langchain 的 Structured output parser

Langchain 的 Structured output parser 当您想要返回多个字段时&#xff0c;可以使用此输出解析器。虽然 Pydantic/JSON 解析器更强大&#xff0c;但我们最初尝试了仅具有文本字段的数据结构。 示例代码&#xff0c; from langchain.output_parsers import StructuredOutput…

如何使用GPT作为SQL查询引擎的自然语言

​生成的AI输出并不总是可靠的&#xff0c;但是下面我会讲述如何改进你的代码和查询的方法&#xff0c;以及防止发送敏感数据的方法。与大多数生成式AI一样&#xff0c;OpenAI的API的结果仍然不完美&#xff0c;这意味着我们不能完全信任它们。幸运的是&#xff0c;现在我们可以…

windows系统问题

删除服务 方法 1&#xff1a;使用「注册表」删除 Windows 服务 注册表是 Windows 操作系统和应用程序存储其低层级配置的数据库&#xff0c;当然也包括了「服务」。在 Windows 中删除任何「服务」最简单方法就是使用「注册表编辑器」&#xff1a; 使用Windows R快捷键打开「…

Vue前端渲染blob二进制对象图片的方法

近期做开发&#xff0c;联调接口。接口返回的是一张图片&#xff0c;是对二进制图片处理并渲染&#xff0c;特此记录一下。 本文章是转载文章&#xff0c;原文章&#xff1a;Vue前端处理blob二进制对象图片的方法 接口response是下图 显然&#xff0c;获取到的是一堆乱码&…

FUNBOX_1靶场详解

FUNBOX_1靶场复盘 这个系列的靶场给出的干扰因素都挺多的&#xff0c;必须从中找到有用的线索才可以。 这个靶场你扫描到ip地址后打开网页会发现&#xff0c;ip自动转换成域名了&#xff0c;所以我们需要添加一条hosts解析才可以。 192.168.102.190 funbox.fritz.box从目录…