Qt实现带验证码的输入框
效果如图:
1、logonwidget.h文件
#ifndef LOGONWIDGET_H
#define LOGINWIDGET_H#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QTimer>class LogonWidget : public QWidget
{Q_OBJECTpublic:explicit LogonWidget(QWidget *parent = nullptr);~LogonWidget();QString GetUser();QString GetPwd();protected:void paintEvent(QPaintEvent* evt);QString getCaptcha();Qt::GlobalColor* getColor();private slots:void CancelBtn_Clicked();void LoginBtn_Clicked();void Timer_Timeout();private:QLabel UserLable;QLabel PwdLable;QLabel CaptLable;QPushButton CancelBtn;QPushButton LoginBtn;QLineEdit UserLineEdit;QLineEdit PwdLineEdit;QLineEdit CaptEdit;QString m_user;QString m_pwd;QString m_captcha;Qt::GlobalColor* m_color;QTimer m_timer;
};#endif // LOGINWIDGET_H
2、logonwidget.cpp文件
#include "logonwidget.h"#include <QPainter>
#include <QTime>
#include <QMessageBox>LogonWidget::LogonWidget(QWidget *parent) :QWidget(parent),UserLable(this), PwdLable(this), CaptLable(this), CancelBtn(this), LoginBtn(this),UserLineEdit(this), PwdLineEdit(this), CaptEdit(this)
{UserLable.setText("User Name");UserLable.move(20, 30);UserLable.resize(60, 25);UserLineEdit.move(85, 30);UserLineEdit.resize(180, 25);PwdLable.setText("Password");PwdLable.move(20, 65);PwdLable.resize(60, 25);PwdLineEdit.move(85, 65);PwdLineEdit.resize(180, 25);PwdLineEdit.setEchoMode(QLineEdit::Password);CaptLable.setText("Captcha");CaptLable.move(20, 100);CaptLable.resize(60, 25);CaptEdit.move(85, 100);CaptEdit.resize(85, 25);LoginBtn.setText("Login");LoginBtn.move(85, 140);LoginBtn.resize(85, 30);CancelBtn.setText("Reset");CancelBtn.move(180, 140);CancelBtn.resize(85, 30);m_timer.setParent(this);setWindowTitle("Login");setFixedSize(290, 190);connect(&LoginBtn, SIGNAL(clicked()), this, SLOT(LoginBtn_Clicked()));connect(&CancelBtn, SIGNAL(clicked()), this, SLOT(CancelBtn_Clicked()));connect(&m_timer, SIGNAL(timeout()), this, SLOT(Timer_Timeout()));qsrand(QTime::currentTime().second() * 1000 + QTime::currentTime().msec());m_captcha = getCaptcha();m_color = getColor();m_timer.start(200);
}LogonWidget::~LogonWidget()
{
}void LogonWidget::CancelBtn_Clicked()
{
// done(Rejected);
}void LogonWidget::LoginBtn_Clicked()
{m_user = UserLineEdit.text().trimmed();//trimmed():Delete spacem_pwd = PwdLineEdit.text();QString captcha = CaptEdit.text().replace(" ", "");if(captcha.toLower() == m_captcha.toLower()){if(m_user.isEmpty()) {QMessageBox::information(this, "Info", "User ID can not be empty");m_captcha = getCaptcha();} else if(m_pwd.isEmpty()) {QMessageBox::information(this, "Info", "Password can not be empty");m_captcha = getCaptcha();} else {
// done(Accepted);}} else {QMessageBox::warning(this, "Warning", "Captcha is not macthed");m_captcha = getCaptcha();}
}void LogonWidget::Timer_Timeout()
{m_color = getColor();update();
}QString LogonWidget::GetUser()
{return m_user;
}QString LogonWidget::GetPwd()
{return m_pwd;
}void LogonWidget::paintEvent(QPaintEvent *evt)
{QPainter painter(this);painter.fillRect(180, 100, 84, 24, Qt::white);painter.setFont(QFont("Comic Sans MS"));for(int i = 0; i < 100; i++){painter.setPen(m_color[i % 4]);painter.drawPoint(180 + (qrand() % 84), 100 + (qrand() % 24));}for(int i = 0; i < 4; i++){painter.setPen(m_color[i]);painter.drawText(180 + 20 * i, 100, 20, 24, Qt::AlignCenter, QString(m_captcha[i]));}
}QString LogonWidget::getCaptcha()
{QString ret = "";for(int i = 0; i < 4; i++){int c = (qrand() % 2) ? 'a' : 'A';ret += static_cast<QChar>(c + qrand() % 26);}return ret;
}Qt::GlobalColor* LogonWidget::getColor()
{static Qt::GlobalColor colors[4];for(int i = 0; i < 4; i++){colors[i] = static_cast<Qt::GlobalColor>((qrand() % 16) + 2);}return colors;
}
Qt实现带验证码的输入框相关推荐
- thinkphp 调用php文件上传,ThinkPHP实现带验证码的文件上传功能实例
本文实例讲述了ThinkPHP实现带验证码的文件上传功能.分享给大家供大家参考.具体实现方法如下: ThinkPHP上传文件非常的简单我们只要调用一个文件上传类UploadFile就可以快速的实现上传 ...
- Linux下不使用qt自带sleep,Linux下Qt多线程编程
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作者:武汉华嵌嵌入式培训中心 技术部 以下和大家分享Linux平台下Qt两种多线程编程的方式: 1.使用Linux平台下的线程函数.以下是给出的代码片段: ...
- Burpsuite技巧之MD5加密密码爆破、带验证码爆破
一.Burpsuite技巧之MD5加密密码爆破 现在有很多后台都不再是明文传输,改成了各种各样的加密方式. 今天就拿MD5加密方式做一个演示,举一反三,希望对新手有用. 如图,MD5加密了密码,遇到这 ...
- 登录页面html5 css3 js代码,H5+css3+js搭建带验证码的登录页面
本文实例为大家分享了H5+css3+js搭建带验证码的登录页面,供大家参考,具体内容如下 login.html EasyBuy后台管理系统 .main_bar{ width:1350px; heigh ...
- 使用C#登录带验证码的网站
我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现,很多人问到对于使用了验证码的网站该怎么办,这里我就讲讲验证码的原理和对应的登录方法. 验证码的由来 几年前,大部分网站.论坛之类的是没有验 ...
- 图书管理系统之带验证码登录界面
图书管理系统之带验证码登录界面 学生成绩管理系统之带验证码登录界面 学生信息管理系统之带验证码登录界面 课程管理系统之带验证码登录界面 这次我们在前者登录界面的基础上增添验证码这一功能,目的是使用 ...
- Qt 实现带阴影 无边框的QMessageBox
Qt 实现带阴影的QMessagebox 在实际项目里面使用到了QMessageBox做一个弹窗,最开始是样式不是需要的样式,就去找了一下QMessageBox的样式表,一般来说可以使用findChi ...
- python实现网站的自动登录(selenium实现,带验证码识别)
python实现网站自动登录(selenium实现,带验证码识别) 一.前言 这是鄙人写的第一篇博客,旨在总结一下近期所学,本文通过selenium工具实现工作所用网站的自动登录,下图为网站登录界面. ...
- 串口调试助手源代码 qt编写 带协议解析 帧判断 通信数据保存等功能
串口调试助手源代码 qt编写 带协议解析 帧判断 通信数据保存等功能 使用说明介绍 1.功能介绍: 采用Qt编写的串口调试助手工具,功能齐全,除了具备十六进制收发及文件保存等基本功能外,还具有以下功能 ...
- 登录页面带验证码html,使用H5+css3+js实现带验证码的登录页面
使用H5+css3+js实现带验证码的登录页面 发布时间:2020-10-28 19:51:18 来源:亿速云 阅读:151 作者:Leah 本篇文章为大家展示了使用H5+css3+js实现带验证码的 ...
最新文章
- 吴恩达新书《Machine Learning Yearning》中7个实用建议(附论文)
- Windows如何打包Qt程序
- Qt 如何发送和接收UDP数据报
- php 两变量值互换 方法
- 小汤学编程之JAVA基础day04——流程结构
- dxf转nc代码软件_Window绝赞的6款软件,效率加班党必备,快到惊人!
- 海园帮忙写的JQUERY功能,实现了我们想要的,我觉得有点屌哟~~
- 帮助小明翻译他的编程语言
- nvidia显卡cuda的性能_苦等10年!512 CUDA满血GTX 480终于出现:性能提升6%、功耗暴增43%...
- Mac UE各版本破解方法
- php程序的完整路径和文件名,php从完整文件路径中分离文件目录和文件名的方法...
- Python3的sys模块
- 阿里云CDN工作原理、使用场景及产品优势简介
- 计算机网络上不去的原因是什么,路由器有信号却上不了网是什么原因?
- 这样去做信用贷款违约预测项目,效果提升明显
- Bootstrap导航和导航条
- PHP登陆页面完整代码
- 电赛 | 循迹小车(省电赛一等奖作品)
- 计算机职称考试入户,揭秘!2020年考什么职称更容易入户广州?
- Windows Api常用函数大全
热门文章
- 基金销售“号”令天下,蚂蚁财富未来要颠覆东方财富?
- 袁玉玮:简介人工智能在基金界的应用 (一)
- 如何建设一个开源图形引擎的文档网站
- 您有一份来自阿里云达摩院的邀请函待查收!
- 【图像去噪】基于matlab GUI HSI彩色图像去噪【含Matlab源码 1786期】
- 【路径规划】基于matlab麻雀算法求解机器人栅格地图最短路径规划问题【含Matlab源码 1582期】
- 【PID优化】基于matlab粒子群和遗传算法PID控制器优化设计【含Matlab源码 1311期】
- 【图像压缩】基于matlab GUI DCT图像压缩(压缩率可调)【含Matlab源码 1049期】
- 【卡号识别】基于matlab CNN银行卡数字识别【含Matlab源码 030期】
- 【三维路径规划】基于matlab A_star算法无人机三维路径规划【含Matlab源码 003期】