Qt 第二讲 登录框完善,登录成功后,进入新的界面;新建工程文件,默认提供的代码注释信息;前两讲思维导图

一,代码完善

头文件

#ifndef ZUOYE_H
#define ZUOYE_H#include <QWidget>
#include <QDebug>
#include <QIcon>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
//#include <QTextToSpeech>QT_BEGIN_NAMESPACE
namespace Ui { class Zuoye; }
QT_END_NAMESPACEclass Zuoye : public QWidget
{Q_OBJECTQPushButton *btn_enter; //登录按钮QPushButton *btn_cancel; //取消按钮QLabel *lab_id; //账号QLabel *lab_pwd; //密码QLabel *lab_logo; //logoQLineEdit *edit_id;//行编辑器账号QLineEdit *edit_pwd;//行编辑器密码public:Zuoye(QWidget *parent = nullptr);~Zuoye();//槽函数
public slots:void my_cancel(); //关闭void my_enter();void my_back_slots(); //接收返回函数
signals:void my_jump(); //跳转信号private:Ui::Zuoye *ui;
};
#endif // ZUOYE_H

源文件

#include "zuoye.h"
#include "ui_zuoye.h"Zuoye::Zuoye(QWidget *parent): QWidget(parent), ui(new Ui::Zuoye)
{ui->setupUi(this);//界面this->resize(540,420); //设置尺寸this->setFixedSize(540,420);//固定尺寸this->setStyleSheet("background-color:white;");//背景颜色this->setWindowOpacity(0.95);//透明度this->setWindowIcon(QIcon(":/icon/qq.png"));//标题栏图标this->setWindowTitle("马❤哥❤快❤聊");//标题栏名字//按钮 1-登录  2-取消 QPushbuttonbtn_enter = new QPushButton;//构造按钮btn_enter->setParent(this);//设置父组件btn_enter->setText("登录");//设置文本内容btn_enter->resize(75,40);//设置按钮大小btn_enter->setStyleSheet("background-color:skyblue;border-radius:10px");//设置样式,背景色,btn_enter->setIcon(QIcon(":/icon/denglu_1.png"));//设置按钮图标btn_enter->setEnabled(true);//设置可用状态btn_enter->move(170,320);//移动组件btn_cancel = new QPushButton;//构造按钮btn_cancel->setParent(this);//设置父组件btn_cancel->setText("取消");//设置文本内容btn_cancel->resize(75,40);//设置按钮大小btn_cancel->setStyleSheet("background-color:skyblue;border-radius:10px");//设置样式,背景色,btn_cancel->setIcon(QIcon(":/icon/quxiao.png"));//设置按钮图标btn_cancel->setEnabled(true);//设置可用状态btn_cancel->move(290,320);//移动组件//设置标签 1-账户  2-密码 3-logo  labellab_id = new QLabel;//构造标签lab_id->setParent(this);//设置父组件lab_id->resize(40,40);//设置尺寸lab_id->setPixmap(QPixmap(":/icon/denglu.png"));//设置图标lab_id->setScaledContents(true);//设置内容自适应lab_id->move(100,170);//移动lab_pwd = new QLabel;//构造标签lab_pwd->setParent(this);//设置父组件lab_pwd->resize(40,40);//设置尺寸lab_pwd->setPixmap(QPixmap(":/icon/denglumima.png"));//设置图标lab_pwd->setScaledContents(true);//设置内容自适应lab_pwd->move(100,250);//移动lab_logo = new QLabel;//构造标签lab_logo->setParent(this);//设置父组件lab_logo->resize(120,120);//设置尺寸lab_logo->setPixmap(QPixmap(":/icon/qq.png"));//设置图标lab_logo->setScaledContents(true);//设置内容自适应lab_logo->move(205,20);//移动//设置行编辑器 1-账号, 2-密码edit_id = new QLineEdit;//构造edit_id->setParent(this);//设置父组件edit_id->resize(250,50);//重新设置尺寸edit_id->setStyleSheet("background-color:red;");//设置颜色//edit_id->setPlaceholderText("QQ号码/手机/邮箱");//设置占位符edit_id->setEchoMode(QLineEdit::Normal);//设置密文模式edit_id->setStyleSheet("border:none;""border-bottom:2px solid blue;");//更改样式表edit_id->move(180,160);//移动QFont font;font.setPointSize(12); // 设置字体大小为12edit_id->setFont(font);// 将字体应用于行编辑器edit_pwd = new QLineEdit;//构造edit_pwd->setParent(this);//设置父组件edit_pwd->resize(250,50);//重新设置尺寸edit_pwd->setStyleSheet("background-color:red;");//设置颜色//edit_pwd->setPlaceholderText("密码");//设置占位符edit_pwd->setEchoMode(QLineEdit::Password);//设置密文模式edit_pwd->setStyleSheet("border:none;""border-bottom:2px solid blue;");//更改样式表edit_pwd->move(180,240);//移动edit_pwd->setFont(font);// 设置字体大小为12connect(btn_cancel, SIGNAL(clicked()), this,SLOT(my_cancel())); //取消按钮连接槽函数QObject::connect(btn_enter, & QPushButton::clicked, this, &Zuoye::my_enter); //登录按钮连接槽函数
}Zuoye::~Zuoye()
{delete ui;
}//取消按钮槽函数
void Zuoye::my_cancel()
{this->close();
}//登录按钮槽函数
void Zuoye::my_enter()
{if("admin" == this->edit_id->text() && "123456" == edit_pwd->text()){qDebug() << "登录成功..." << endl;emit my_jump();close();}else{qDebug() << "账号密码不匹配,请重新输入..." << endl;this->edit_pwd->clear();}
}void Zuoye::my_back_slots()
{this->show();
}

界面二 头文件

#ifndef JUMP_INTERFACE_H
#define JUMP_INTERFACE_H#include <QWidget>namespace Ui {
class jump_interface;
}class jump_interface : public QWidget
{Q_OBJECTpublic:explicit jump_interface(QWidget *parent = nullptr);~jump_interface();private slots:void on_back_clicked();//信号  返回登录界面
signals:void my_back();//槽  接收登录界面的跳转
public slots:void my_jump_slot();private:Ui::jump_interface *ui;
};#endif // JUMP_INTERFACE_H

源文件

#include "jump_interface.h"
#include "ui_jump_interface.h"jump_interface::jump_interface(QWidget *parent) :QWidget(parent),ui(new Ui::jump_interface)
{ui->setupUi(this);
}jump_interface::~jump_interface()
{delete ui;
}//返回按钮槽函数
void jump_interface::on_back_clicked()
{emit my_back();this->close();
}//接收登录界面跳转 槽函数
void jump_interface::my_jump_slot()
{this->show();
}

运行结果

 

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

工程管理文件

QT       += core gui
#引入Qt苏需要的类库,核心库,图形化界面库greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#超过4.0版本,加上 widgets库CONFIG += c++11
#支持C++11以上版本# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \widget.cpp
#管理源文件HEADERS += \widget.h
#管理头文件FORMS += \widget.ui
#管理UI文件# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

头文件

#ifndef WIDGET_H
#define WIDGET_H
//防止文件重复包含#include <QWidget> //头文件QT_BEGIN_NAMESPACE
namespace Ui { class Widget; } //声明ui界面对应的头文件中的命名空间
QT_END_NAMESPACEclass Widget : public QWidget //自定义类,继承自QWidget
{Q_OBJECT //信号与槽的元对象public:Widget(QWidget *parent = nullptr); //构造函数~Widget(); //析构函数private:Ui::Widget *ui; //使用UI界面对应头文件中的命名空间中的类定义的指针//后期,如果想要使用ui界面中拖拽出来的组件,可以该指针找到
};                  //自己定义的组件,使用this指针找到
#endif // WIDGET_H

源文件

#include "widget.h" //自定义头文件
#include "ui_widget.h" //ui界面的头文件//构造函数
Widget::Widget(QWidget *parent) //调用父类的有参构造: QWidget(parent), ui(new Ui::Widget)    //构造出ui界面拖拽出来的成员,并且将地址赋值给ui指针
{ui->setupUi(this); //调用设置界面函数,给ui界面上的组件申请空间
}Widget::~Widget()
{delete ui; //释放ui界面上的组件空间
}

主函数

#include "widget.h" //自定义头文件#include <QApplication> //应用程序的头文件int main(int argc, char *argv[])
{QApplication a(argc, argv); //使用应用程序类,实例化一个类对象,//使用自定义类实例化的对象(栈区)Widget w; //无参构造,实例化一个对象,改界面没有父组件,独立存在,别的组件依附于该对象w.show();return a.exec();//阻塞等待界面相关工作:用户在界面上的操作,信号与槽,事件处理
}

三,思维导图

 

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

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

相关文章

⛳ 面向对象面试题

面向对象面试题目录 ⛳ 面向对象面试题&#x1f69c; 一&#xff0c;成员变量&#xff0c;局部变量&#xff0c;类变量存储在内存的什么地方&#xff1f;&#x1f43e; 1.1&#xff0c;类变量&#xff08;静态成员变量&#xff09;&#x1f4dd; 1.2&#xff0c;成员变量⭐ 1.3…

网络安全进阶学习第七课——文件包含漏洞

文章目录 一、文件包含概念二、文件包含漏洞原理三、文件包含分类文件包含分为两种&#xff1a; 四、与文件包含相关的配置文件&#xff1a;&#xff08;php.ini文件&#xff09;五、与文件包含有关的函数1、include()2、include_once()3、require()4、require_once() 六、文件…

iTOP-STM32MP157开发板Linux Misc驱动-编译驱动程序

这里我们以 stm32mp157 开发板为例&#xff0c;将杂项设备驱动编译成模块&#xff0c;请参考本手册第三十七章 Linux 内核模块。我们将 misc.c 文件拷贝到 Ubuntu 的/home/nfs/03 目录下。将上次编译 helloworld 的 Makefile 文 件拷贝到 misc.c 同级目录下&#xff0c;修改 …

解决Unable to load authentication plugin ‘caching_sha2_password‘

连接Mysql8时报错&#xff1a; java.sql.SQLException: Unable to load authentication plugin caching_sha2_password.原因 不同版本的认证插件不同造成的 8版本前是&#xff1a;default_authentication_pluginmysql_native_password 8版本后是&#xff1a;default_authenti…

Postman抓包教程

目录 什么是抓包&#xff1f; 如何使用 Postman 进行抓包 查看历史抓包数据 使用抓包数据进行接口测试和开发 抓包技巧和注意事项 什么是抓包&#xff1f; 在计算机网络中&#xff0c;抓包是指捕获网络流量的过程。抓包工具可以截获进出计算机网络的数据流&#xff0c;并将…

Python numpy库的应用、matplotlib绘图、opencv的应用

numpy import numpy as npl1 [1, 2, 3, 4, 5]# array():将列表同构成一个numpy的数组 l2 np.array(l1) print(type(l2)) print(l2) # ndim : 返回数组的轴数&#xff08;维度数&#xff09; # shape&#xff1a;返回数组的形状&#xff0c;用元组表示&#xff1b;元组的元素…

SpringCloudAlibaba微服务实战系列(五)Sentinel1.8.5+Nacos持久化

Sentinel数据持久化 前面介绍Sentinel的流控、熔断降级等功能&#xff0c;同时Sentinel应用也在面临着一个问题&#xff1a;我们在Sentinel后台管理界面中配置了一堆流控、降级规则&#xff0c;但是Sentinel一重启&#xff0c;这些规则全部消失了。那么我们就要考虑Sentinel的持…

1、传统锁回顾(Jvm本地锁,MySQL悲观锁、乐观锁)

目录 1.1 从减库存聊起1.2 环境准备1.3 简单实现减库存1.4 演示超卖现象1.5 jvm锁1.6 三种情况导致Jvm本地锁失效1、多例模式下&#xff0c;Jvm本地锁失效2、Spring的事务导致Jvm本地锁失效3、集群部署导致Jvm本地锁失效 1.7 mysql锁演示1.7.1、一个sql1.7.2、悲观锁1.7.3、乐观…

深度学习:常用优化器Optimizer简介

深度学习&#xff1a;常用优化器Optimizer简介 随机梯度下降SGD带动量的随机梯度下降SGD-MomentumSGDWAdamAdamW 随机梯度下降SGD 梯度下降算法是使权重参数沿着整个训练集的梯度方向下降&#xff0c;但往往深度学习的训练集规模很大&#xff0c;计算整个训练集的梯度需要很大…

集睿致远推出CS5466多功能拓展坞方案:支持DP1.4、HDMI2.1视频8K输出

ASL新推出的 CS5466是一款Type-C/DP1.4转HDMI2.1的显示协议转换芯片,&#xff0c;它通过类型C/显示端口链路接收视频和音 频流&#xff0c;并转换为支持TMDS或FRL输出信令。DP接收器支持81.Gbp s链路速率。HDMI输出端口可以作为TMDS或FRL发射机工作。FRL发射机符合HDMI 2.1规范…

OpenCvSharp (C# OpenCV) 二维码畸变矫正--基于透视变换(附源码)

导读 本文主要介绍如何使用OpenCvSharp中的透视变换来实现二维码的畸变矫正。 由于CSDN文章中贴二维码会导致显示失败,大家可以直接点下面链接查看图片: C# OpenCV实现二维码畸变矫正--基于透视变换 (详细步骤 + 代码) 实现步骤 讲解实现步骤之前先看下效果(左边是原图,右边…

菜鸡shader:L13 渐隐渐显的UV动画

文章目录 SD部分Shader代码部分 呃呃&#xff0c;这是目前我学习庄懂AP01课程的最后一节了&#xff0c;我看了一下21集之后的内容是关于LightingMap&#xff0c;目前感觉还用不到&#xff0c;加上之前参与过一个项目里面也有用到LightingMap&#xff0c;也算了解过&#xff0c;…

拦截Bean使用之前各个时机的Spring组件

拦截Bean使用之前各个时机的Spring组件 之前使用过的BeanPostProcessor就是在Bean实例化之后&#xff0c;注入属性值之前的时机。 Spring Bean的生命周期本次演示的是在Bean实例化之前的时机&#xff0c;使用BeanFactoryPostProcessor进行验证&#xff0c;以及在加载Bean之前进…

NISP含金量?NISP真的有必要考么?NISP好考吗?NISP二级为什么那么贵?

NISP证书简述 NISP证书三个级别&#xff0c;分别是&#xff1a;一级、二级、三级&#xff08;专项&#xff09; 证书。其每一项资格证书都有不同的优点&#xff0c;但是优点各有 相同&#xff0c;而且拥有NISP二级证书可以免考更换CISP资格证书&#xff0c;那么证书含金量如何下…

rcu链表综合实践

基础知识 rcu-read copy update的缩写。和读写锁起到相同的效果。据说牛逼一点。对于我们普通程序员&#xff0c;要先学会使用&#xff0c;再探究其内部原理。 链表的数据结构&#xff1a; struct list_head {struct list_head *next, *prev; };还有一种&#xff1a;struct h…

STM32(HAL库)驱动st7789LCD屏幕(7引脚240*240)

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 屏幕引脚配置 2.3 项目生成 3、KEIL端程序整合 3.1 LCD驱动添加 3.2 函数修改 3.2.1 lcd.h修改 3.2.2 lcd_innit.h 修改 3.2.3 lcd.c修改 3.2.4 lcd_inut.c修改 3.3 主函数代码 3.3…

Django学习笔记-表单(forms)的使用

在Django中提供了了form表单&#xff0c;可以更为简单的创建表单模板信息&#xff0c;简化html的表单。 一、网页应用程序中表单的应用 表单通常用来作为提交数据时候使用。 1.1 创建表单模板文件夹 在项目文件夹下创建一个template文件夹&#xff0c;用于存储所有的html模…

使用百度地图SDK计算距离

说明&#xff1a;通过百度地图提供的SDK&#xff0c;可以计算出两个地点之间的距离&#xff0c;另外还有行驶路线等等。本文介绍如果使用百度地图SDK&#xff0c;并用java代码实现。 申请 首先需要登录百度地图的官网&#xff0c;申请开发者认证&#xff0c;个人认证一般都很…

GPT一键化身「AI助理」——自定义指令功能

最近GPT又更新了一个超实用的功能——自定义指令&#xff0c;启用后&#xff0c;你可以给GPT设置一些固定指令&#xff0c;让它记住或扮演某个角色&#xff0c;比如客服、律师、投资管理师、老师、营养师...... 这样&#xff0c;我们就不再需要每次都要打开新的聊天&#xff0c…

ChatGPT的工作原理:从输入到输出

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…