效果如图:

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实现带验证码的输入框相关推荐

  1. thinkphp 调用php文件上传,ThinkPHP实现带验证码的文件上传功能实例

    本文实例讲述了ThinkPHP实现带验证码的文件上传功能.分享给大家供大家参考.具体实现方法如下: ThinkPHP上传文件非常的简单我们只要调用一个文件上传类UploadFile就可以快速的实现上传 ...

  2. Linux下不使用qt自带sleep,Linux下Qt多线程编程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作者:武汉华嵌嵌入式培训中心 技术部 以下和大家分享Linux平台下Qt两种多线程编程的方式: 1.使用Linux平台下的线程函数.以下是给出的代码片段: ...

  3. Burpsuite技巧之MD5加密密码爆破、带验证码爆破

    一.Burpsuite技巧之MD5加密密码爆破 现在有很多后台都不再是明文传输,改成了各种各样的加密方式. 今天就拿MD5加密方式做一个演示,举一反三,希望对新手有用. 如图,MD5加密了密码,遇到这 ...

  4. 登录页面html5 css3 js代码,H5+css3+js搭建带验证码的登录页面

    本文实例为大家分享了H5+css3+js搭建带验证码的登录页面,供大家参考,具体内容如下 login.html EasyBuy后台管理系统 .main_bar{ width:1350px; heigh ...

  5. 使用C#登录带验证码的网站

    我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现,很多人问到对于使用了验证码的网站该怎么办,这里我就讲讲验证码的原理和对应的登录方法. 验证码的由来 几年前,大部分网站.论坛之类的是没有验 ...

  6. 图书管理系统之带验证码登录界面

    图书管理系统之带验证码登录界面 学生成绩管理系统之带验证码登录界面 学生信息管理系统之带验证码登录界面 课程管理系统之带验证码登录界面   这次我们在前者登录界面的基础上增添验证码这一功能,目的是使用 ...

  7. Qt 实现带阴影 无边框的QMessageBox

    Qt 实现带阴影的QMessagebox 在实际项目里面使用到了QMessageBox做一个弹窗,最开始是样式不是需要的样式,就去找了一下QMessageBox的样式表,一般来说可以使用findChi ...

  8. python实现网站的自动登录(selenium实现,带验证码识别)

    python实现网站自动登录(selenium实现,带验证码识别) 一.前言 这是鄙人写的第一篇博客,旨在总结一下近期所学,本文通过selenium工具实现工作所用网站的自动登录,下图为网站登录界面. ...

  9. 串口调试助手源代码 qt编写 带协议解析 帧判断 通信数据保存等功能

    串口调试助手源代码 qt编写 带协议解析 帧判断 通信数据保存等功能 使用说明介绍 1.功能介绍: 采用Qt编写的串口调试助手工具,功能齐全,除了具备十六进制收发及文件保存等基本功能外,还具有以下功能 ...

  10. 登录页面带验证码html,使用H5+css3+js实现带验证码的登录页面

    使用H5+css3+js实现带验证码的登录页面 发布时间:2020-10-28 19:51:18 来源:亿速云 阅读:151 作者:Leah 本篇文章为大家展示了使用H5+css3+js实现带验证码的 ...

最新文章

  1. 吴恩达新书《Machine Learning Yearning》中7个实用建议(附论文)
  2. Windows如何打包Qt程序
  3. Qt 如何发送和接收UDP数据报
  4. php 两变量值互换 方法
  5. 小汤学编程之JAVA基础day04——流程结构
  6. dxf转nc代码软件_Window绝赞的6款软件,效率加班党必备,快到惊人!
  7. 海园帮忙写的JQUERY功能,实现了我们想要的,我觉得有点屌哟~~
  8. 帮助小明翻译他的编程语言
  9. nvidia显卡cuda的性能_苦等10年!512 CUDA满血GTX 480终于出现:性能提升6%、功耗暴增43%...
  10. Mac UE各版本破解方法
  11. php程序的完整路径和文件名,php从完整文件路径中分离文件目录和文件名的方法...
  12. Python3的sys模块
  13. 阿里云CDN工作原理、使用场景及产品优势简介
  14. 计算机网络上不去的原因是什么,路由器有信号却上不了网是什么原因?
  15. 这样去做信用贷款违约预测项目,效果提升明显
  16. Bootstrap导航和导航条
  17. PHP登陆页面完整代码
  18. 电赛 | 循迹小车(省电赛一等奖作品)
  19. 计算机职称考试入户,揭秘!2020年考什么职称更容易入户广州?
  20. Windows Api常用函数大全

热门文章

  1. 基金销售“号”令天下,蚂蚁财富未来要颠覆东方财富?
  2. 袁玉玮:简介人工智能在基金界的应用 (一)
  3. 如何建设一个开源图形引擎的文档网站
  4. 您有一份来自阿里云达摩院的邀请函待查收!
  5. 【图像去噪】基于matlab GUI HSI彩色图像去噪【含Matlab源码 1786期】
  6. 【路径规划】基于matlab麻雀算法求解机器人栅格地图最短路径规划问题【含Matlab源码 1582期】
  7. 【PID优化】基于matlab粒子群和遗传算法PID控制器优化设计【含Matlab源码 1311期】
  8. 【图像压缩】基于matlab GUI DCT图像压缩(压缩率可调)【含Matlab源码 1049期】
  9. 【卡号识别】基于matlab CNN银行卡数字识别【含Matlab源码 030期】
  10. 【三维路径规划】基于matlab A_star算法无人机三维路径规划【含Matlab源码 003期】