QT信号与槽/窗口组件优化/使用QT制作QQ登录界面

使用手动连接,将登录框中的取消按钮使用第二中连接方式,右击转到槽,在该槽函数中,调用关闭函数
将登录按钮使用qt4版本的连接到自定义的槽函数中,在槽函数中判断u界面上输入的账号是否为"admin",密码是否为"123456"如果账号密码匹配成功,则输出"登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空
代码:

mywidget.cpp

#include "mywidget.h"Mywidget::Mywidget(QWidget *parent): QWidget(parent)
{/********制作一个QQ登录界面*********************/this->resize(535,415);//设置登录窗口大小this->setFixedSize(535,415);//固定窗口大小this->setWindowTitle("QQ");//设置窗口标题this->setWindowIcon(QIcon(":/pictrue/QQ.png"));//设置窗口图标this->setStyleSheet("background-color:white");//背景设置成白色this->setWindowFlag(Qt::FramelessWindowHint);//隐藏窗口,设置为纯净窗口QLabel *lab1=new QLabel(this);//动态图标签lab1->resize(535,135);//动态标签大小QMovie *mv=new QMovie(":/pictrue/QQ3.gif");//设置一个动态图对象指针接收动态图lab1->setMovie(mv);//将动图设置到lab1标签中mv->start();//让动图动起来lab1->setScaledContents(true);//让图片自适应标签设置大小QLabel *lab2=new QLabel(this);//qq图标签lab2->resize(94,50);//qq标签大小lab2->setPixmap(QPixmap(":/pictrue/94x50.png"));lab2->setScaledContents(true);//让图片自适应标签设置大小QPushButton *btn1=new QPushButton("?",this);//设置按钮btn1->resize(20,20);//设置按钮大小btn1->move(440,0);//设置按钮位置btn1->setStyleSheet("background-color:rgb(14,114,240)");//设置按钮背景颜色QPushButton *btn2=new QPushButton("-",this);//设置最小化按钮btn2->resize(20,20);//设置按钮大小btn2->move(460,0);//设置按钮位置btn2->setStyleSheet("background-color:rgb(14,114,240)");//设置按钮背景颜色QPushButton *btn3=new QPushButton("x",this);//设置退出按钮btn3->resize(20,20);//设置按钮大小btn3->move(480,0);//设置按钮位置btn3->setStyleSheet("background-color:rgb(14,114,240)");//设置按钮背景颜色QLabel *lab3=new QLabel(this);//qq头像图标签lab3->setFixedSize(80,80);//qq标签大小lab3->setStyleSheet("background-color:white;border-radius:40px");//将标签设置为圆形QPixmap *pte=new QPixmap(":/pictrue/QQ.png");//加载图片QPixmap pix(pte->width(),pte->height());//创建新的qpixmap,作为新的裁剪容器pix.fill(Qt::transparent);//设置图片透明QPainter painter(&pix);//进行绘制painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);//抗锯齿效果int radius=pte->width() > pte->height() ? pte->height()/2 : pte->width()/2;//设置裁剪半径QPainterPath path;//裁剪区域//path.addEllipse(pte->rect().center(),70,62);//绘制裁剪区域大小path.addEllipse(pte->rect().center(),radius+8,radius);//绘制裁剪区域大小.微调裁剪范围painter.setClipPath(path);//只显示图片裁剪后的区域painter.drawPixmap(pix.rect(),*pte);//将源图片内容绘制到创建的pix上,非裁剪内容不显示//lab3->setPixmap(QPixmap(":/pictrue/QQ.png"));lab3->move(228,95);//设置头像位置lab3->setScaledContents(true);//让图片自适应标签设置大小lab3->setPixmap(pix);QLabel *lab4=new QLabel(this);//账号图标lab4->resize(24,36);//标签大小lab4->setPixmap(QPixmap(":/pictrue/24x36.png"));lab4->move(120,220);//设置位置lab4->setScaledContents(true);//让图片自适应标签设置大小edit1=new QLineEdit(this); //账户输入行编辑器edit1->resize(260,24);//设置行编辑大小edit1->move(144,225);//设置位置edit1->setPlaceholderText("QQ号码/手机/邮箱");//设置占位QPushButton *btn4=new QPushButton("<>",this);//设置历史切换按钮btn4->resize(20,24);//设置按钮大小btn4->move(404,225);//设置按钮位置QLabel *lab5=new QLabel(this);//密码图标lab5->resize(24,36);//标签大小lab5->setPixmap(QPixmap(":/pictrue/24xxx36.png"));lab5->move(120,254);//设置位置lab5->setScaledContents(true);//让图片自适应标签设置大小edit2=new QLineEdit(this); //密码输入行编辑器edit2->resize(260,24);//设置行编辑大小edit2->move(144,266);//设置位置edit2->setPlaceholderText("密码");edit2->setEchoMode(QLineEdit::Password);//设置显示模式QPushButton *btn5=new QPushButton("::",this);//设置鼠标输入按钮btn5->resize(20,24);//设置按钮大小btn5->move(404,266);//设置按钮位置QPushButton *btn6=new QPushButton(QIcon(":/pictrue/19x19.png")," 自动登录",this);//勾选自动登录按钮btn6->resize(100,21);//设置按钮大小btn6->move(121,300);//设置按钮位置QPushButton *btn7=new QPushButton(QIcon(":/pictrue/19x19.png")," 记住密码",this);//记住密码按钮btn7->resize(100,21);//设置按钮大小btn7->move(231,300);//设置按钮位置QPushButton *btn8=new QPushButton("找回密码",this);//找回密码按钮btn8->resize(80,21);//设置按钮大小btn8->move(344,300);//设置按钮位置QPushButton *btn9=new QPushButton("登录",this);//登录按钮btn9->resize(301,45);//设置按钮大小btn9->move(123,340);//设置按钮位置btn9->setStyleSheet("background-color:rgb(8,189,253);border-radius:4px");//设置按钮颜色QPushButton *btn10=new QPushButton("注册账号",this);//注册账号按钮btn10->resize(80,21);//设置按钮大小btn10->move(15,390);//设置按钮位置QPushButton *btn11=new QPushButton(QIcon(":/pictrue/30x30.png"),"",this);//扫二维码登录按钮btn11->resize(30,30);//设置按钮大小btn11->move(490,381);//设置按钮位置/*****************设置按钮功能******************************************/connect(btn3,SIGNAL(clicked()),this,SLOT(quitbtn()));//btn3点击关闭窗口connect(btn2,SIGNAL(clicked()),this,SLOT(showmin()));//btn2点击最小化窗口//connect(edit1,SIGNAL(editingFinished()),this,SLOT(verifyuser()));//获取行编辑器账户内容connect(edit2,SIGNAL(editingFinished()),this,SLOT(verifyuser()));//获取行编辑器密码
}Mywidget::~Mywidget()
{
}void Mywidget::quitbtn(){//内外定义关闭函数this->close();
}
void Mywidget::showmin(){//内外定义最小化函数this->showMinimized();
}
void Mywidget::verifyuser(){//内外验证账户函数QString username=edit1->text();QString userpasswd=edit2->text();//QMessageBox *box= new QMessageBox(this);if(username=="admin"&&userpasswd=="123456"){QMessageBox ::question(this,tr("系统提示"),tr("登录成功!"),QMessageBox::Ok,QMessageBox::Ok);//对话框提示登录成功this->close();}else{QMessageBox ::question(this,tr("系统提示"),tr("登录失败!"),QMessageBox::Ok,QMessageBox::Ok);//对话框提示登录失败edit1->clear();edit2->clear();//清空行编辑器}
}

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H#include <QWidget>
#include <QIcon>//图标类
#include <QMovie> //动图类
#include <QLabel> //标签类
#include <QPushButton> //按钮类
#include <QLineEdit> //行编辑器
#include <QPixmap>
#include <QPainter>//绘制类
#include <QDebug>
#include <QMessageBox>//消息对话框
class Mywidget : public QWidget
{Q_OBJECTpublic:Mywidget(QWidget *parent = nullptr);~Mywidget();
private:QLineEdit *edit1;QLineEdit *edit2;
public slots:void quitbtn();//声明一个退出槽函数void showmin();//声明一个最小化函数void verifyuser();//声明验证用户账号密码
};
#endif // MYWIDGET_H

main.cpp

#include "mywidget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Mywidget w;w.show();return a.exec();
}

运行结果示例:

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

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

相关文章

永磁同步直线电机(PMLSM)控制与仿真3-永磁同步直线电机数学三环控制整定

文章目录 1、电流环参数整定2、速度环参数整定3、位置环参数整定 写在前面&#xff1a;原本为一篇文章写完了永磁同步直线电机数学模型介绍&#xff0c;永磁同步直线电机数学模型搭建&#xff0c;以及永磁同步直线电机三环参数整定及三环仿真模型搭建&#xff0c;但因为篇幅较长…

HTML前端

html 超文本标记语言 文本&#xff1a;文字字符 超文本&#xff1a;网页内容 标记&#xff1a;标签 标识 提供许多标签&#xff0c;不同标签功能不同&#xff0c;网页就是通过这些标签描述出来的&#xff0c;最终由浏览器解释运行我们看到的网页 <!-- html注释<!DO…

C++ 50 之 继承中的对象模型

继承中的对象模型 在C编译器的内部可以理解为结构体&#xff0c;子类是由父类成员叠加子类新成员而成&#xff1a; #include <iostream> #include <string> using namespace std;class Base03{ public:int m_a; protected:int m_b; private:int m_c; // 哪怕是…

lua对接GPT4实现对话

演示效果&#xff1a; 准备材料&#xff1a; 1、FastWeb网站开发服务&#xff1a;fwlua.com 2、一台服务器 该示例使用开源项目&#xff1a;fastweb 实现。 代码比较简单&#xff0c;主要是两部分&#xff0c;一个lua代码和一个html页面&#xff0c;用来用户发起请求和后台…

面向事件编程之观察者模式

前言 村里的老人常说&#xff1a;真男人就该懂得遵守“三不原则”——不主动、不拒绝、不负责。 一个复杂的软件系统&#xff0c;其中必然会存在各种各样的“对象”&#xff0c;如果在设计之初没有注意控制好耦合度&#xff0c;导致各个对象甚至是函数之间高度耦合&#xff0…

网络安全知识全景地图V1.0 - 20240616更新

网络安全领域的知识全景涵盖了从基础概念到高级技术的广泛内容。博主基于自身十年多的工作经验结合CISSP认证官方教材按照不同的主题和层次梳理出如下高层次的概览地图&#xff0c;可以帮助个人和组织理解网络安全领域的主题。 1.1. 基础理论 1.1.1. 网络安全概述 网络安全的…

React@16.x(29)useRef

目录 1&#xff0c;介绍2&#xff0c;和 React.createRef() 的区别3&#xff0c;计时器的问题 目前来说&#xff0c;因为函数组件每次触发更新时&#xff0c;都会重新运行。无法像类组件一样让一些内容保持不变。 所以才出现了各种 HOOK 函数&#xff1a;useState&#xff0c;u…

Camtasia Studio 2024软件最新版下载【安装详细图文教程】

​Camtasia是美国TechSmith公司出品的一款集电脑屏幕录制、视频剪辑为一体的软件套装。同时包含Camtasia 录制器、Camtasia Studio&#xff08;编辑器&#xff09;、Camtasia 菜单制作器、Camtasia 剧场、Camtasia 播放器和Screencast的内置功能。 安 装 包 获 取 地 址&#x…

AirPlay技术规范及认证资讯

AirPlay是Apple开发的一种无线技术&#xff0c;允许用户将音频、视频或图片从iOS设备、Mac电脑或其他支持AirPlay的设备无线传输到支持AirPlay的接收器设备上&#xff0c;例如智能电视或音响系统。这项技术基于Wi-Fi网络&#xff0c;提供了一种便捷的方式来共享媒体内容。AirPl…

车票信息的请求与显示

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 1 发送与分析车票信息的查询请求 得到了获取车票信息的网络请求地址&#xff0c;然后又分析出请求地址的必要参数以及车站名称转换的文件&#xff…

《软件测试52讲》——测试基础知识篇

1 你真的懂测试吗&#xff1f;从“用户登录”测试谈起 从“用户登录”测试谈起&#xff0c;“用户登录”功能作为测试对象 作为测试工程师&#xff0c;你的目标是要保证系统在各种应用场景下的功能是符合设计要求的&#xff0c;所以你需要考虑的测试用例就需要更多、更全面。 …

2078.两栋颜色不同且距离最远的房子

街上有 n 栋房子整齐地排成一列&#xff0c;每栋房子都粉刷上了漂亮的颜色。给你一个下标从 0 开始且长度为 n 的整数数组 colors &#xff0c;其中 colors[i] 表示第 i 栋房子的颜色。 返回 两栋 颜色 不同 房子之间的 最大 距离。 第 i 栋房子和第 j 栋房子之间的距离是 a…

Linux应用编程 - i2c-dev操作I2C

嵌入式Linux操作I2C设备&#xff0c;我们一般会在内核态编写I2C驱动程序。另外还能在用户空间编写I2C程序&#xff0c;下面介绍相关代码的实现。 i2c-dev框架在内核中封装了I2C通信所需要的所有通信细节&#xff0c;I2C适配器会在/dev目录下创建字符设备&#xff0c;例如&#…

kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏

场景&#xff1a;输入在指定的错误(错误应涵盖数据类型不匹配的情况)行数内&#xff0c;trans不报错&#xff0c;但通过错误处理步骤捕捉&#xff0c;并记入文件&#xff0c;整个数据管线正常完成直至处理完最后一个输入行。 解决方案&#xff1a;使用步骤【数据检验】进行处理…

本周MoonBit新增Wasm1引用计数支持、语法即将添加错误恢复机制

MoonBit更新 【Wasm MVP】Wasm1 后端添加基于 Perceus 算法的引用计数支持 【语法】throw raise try catch 均被保留为关键字 为了即将添加的错误处理机制 【Core】List与sorted_map被移动至core/immut下 List被移动至core/immut/list包中&#xff0c;并被移除内置类型支持 …

哈希表、递归在二叉树中的应用-1372. 二叉树中的最长交错路径

题目链接及描述 1372. 二叉树中的最长交错路径 - 力扣&#xff08;LeetCode&#xff09; 题目分析 题目所述&#xff0c;计算在二叉树中交替遍历的最大深度【左->右->左】【右->左->右】&#xff0c;例如对于从当前根节点root出发&#xff0c;则此时遍历方向有两个…

今日成果2024-6-7 TrustZone TEE安全SDK开发指南

Rockchip Vendor Storage Application Note.pdf OK 开机下&#xff0c;可以实现Vendor Storage的读写。 0ms时同步RTC时间 OK Rockchip_Developer_Guide_TEE_SDK_CN.pdf 什么是TrustZone 此系统方法意味着可以保护安全内存、加密块、键盘和屏幕等外设&#xff0c;从而可确…

视频剪辑可以赚钱吗 快速学会视频剪辑的方法

由于视频剪辑的需求不断增长&#xff0c;学会视频剪辑成为一项自媒体必备的技能&#xff0c;这个技能可以为个人带来收入和职业发展带来机会。无论是作为自由职业者还是在公司工作&#xff0c;掌握视频剪辑技能都可以为你提供更多的工作机会和竞争优势。这篇文章将讲解视频剪辑…

2.深度学习-线性回归

文章目录 环境配置&#xff08;必看&#xff09;线性回归代码工程运行结果1.对比图2.运行结果 环境配置&#xff08;必看&#xff09; Anaconda-创建虚拟环境的手把手教程相关环境配置看此篇文章&#xff0c;本专栏深度学习相关的版本和配置&#xff0c;均按照此篇文章进行安装…

Carsim高级开发:VS Connect通讯开发指南

文章目录 前言一、VS Connect 概念引入二、VS Connect 通讯框架三、Carsim 工程配置1、车辆模型配置2、procedure配置3、Run Control配置4、受控车辆名称配置 四、VS Connect Server代码1、打开Sln工程2、代码修改 五、VS Connect Client代码1、函数的调用关系2、carsim_variab…