效果图:


原理
随机挑选数字或者字母,随机选取颜色,通过绘制实现数字和字母验证码以及背景噪点

核心代码

//随机获取验证码数字和字母
QString Verification::getVerificationCodeByRand()
{QString destCode = QString();for (int i = 0; i < m_codeNum; i++) {int flag = qrand() % 2;if (0 == flag) {int c = '0' + qrand() % 10;destCode += static_cast<QChar>(c);}else {int c = (qrand() % 2) ? 'a' : 'A';destCode += static_cast<QChar>(c + qrand() % 26);}}return destCode;
}//随机获取颜色
Qt::GlobalColor * Verification::getColors()
{static Qt::GlobalColor colors[4];for (int i = 0; i < 4; i++){colors[i] = static_cast<Qt::GlobalColor>(2 + qrand() % 16);}return colors;
}//绘制
void Verification::paintEvent(QPaintEvent * event)
{QPainter painter(this);//填充验证码绘制矩形painter.fillRect(0, 0, 100, 30, QColor(255, 250, 240));painter.setFont(QFont("Comic Sans MS", 12));//绘制验证码for (int i = 0; i < m_codeNum; i++){painter.setPen(m_colors[i]);painter.drawText(25 * i, 0, 25, 30, Qt::AlignCenter, QString(m_verificationCode[i]));}//绘制噪点if (m_bstyle == BackgroundStyle::E_DOT)paintDot(&painter);
}//绘制噪点
void Verification::paintDot(QPainter * painter)
{if (Q_NULLPTR == painter)return;//绘制噪点for (int i = 0; i < 150; i++){painter->setPen(m_colors[i % 4]);painter->drawPoint(qrand() % 99, qrand() % 29);}
}

源码传送门

Qt实现验证码功能控件相关推荐

  1. Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789693 长期持续带来更多项目与技术分 ...

  2. VS+QT开发Ocx/ActiveX控件 一

    VS+QT开发Ocx/ActiveX控件 一 VS+QT开发Ocx/ActiveX控件-------网页中全屏 二 QT开发ActiveX控件 一:所用IDE版本,需用管理员权限 二:创建Active ...

  3. 一个自定义的安卓验证码输入框控件、银行卡归属类型查询

    一个自定义的安卓验证码输入框控件.银行卡归属类型查询. GitHub:https://github.com/longer96/VerifyCode Dependency Gradle dependen ...

  4. 自定义验证码输入控件

    控件代码深度参考了掘金文章 Android仿滴滴出行验证码输入框效果,增加了 setText() 方法 控件采用多个横向排列的 EditText 组合控件来实现验证码录入框. 自定义属性文件 attr ...

  5. QT QSpinBox 整数计数器控件 使用详解

    本文详细的介绍了QSpinBox控件的各种操作,例如:获取数值.设置前后缀.设置最大/小值.进制转换.关联信号槽.优化信号.QSS优化.文件源码.样式表 .效果:可以设置背景.边框.向上按钮.向下按钮 ...

  6. linux qt 打印预览控件,Qt实现保存、浏览、预览、打印功能的示例代码

    Qt提供了以文本.图片.HTML等方式来实现对文档的操作,主要用到了QPrinter类和QPainter类,用到了QFileDialog文件窗口.QPrintPreviewDialog预览窗口类和QP ...

  7. Qt笔记 之 QListWidget控件的使用

    Qt提供QListWidget类列表框控件用来加载并显示多个列表项.QListWidgetItem类就是列表项类.一般列表框控件中的列表项有两种加载方式: 一种是由用户手动添加的列表项,比如音乐播放器 ...

  8. Qt 实现自定义Ui控件例子,以自定义的Slider为例(QWidget)

    说明 Qt可以比较方便地实现自定义控件在Qt Creator中使用.网上也有很多大神的控件可以使用,但是如果想要自己简单定制也可以按照这个流程. 本文的要点: [1]如何实现一个自定义控件? 本文使用 ...

  9. qt超强精美绘图控件 - QCustomPlot一览 及 安装使用教程

    1.概述 QCustomPlot 是一个超强超小巧的qt绘图类,非常漂亮,非常易用,只需要加入一个qcustomplot.h和qcustomplot.cpp文件即可使用,远比qwt方便和漂亮,可以自己 ...

最新文章

  1. BCH开发Cashscript语言,可构建自主决策交易特定方案
  2. Redis数据库的应用场景介绍
  3. 【c#】RabbitMQ学习文档(一)Hello World
  4. 顶会论文看不懂?阿里巴巴技术专家为你全方位解读!
  5. 快速正确的修改变量的命名和如何正确规范的注释
  6. 从俄罗斯方块到星际2,全都用得上:DeepMind无监督分割大法,为游戏而生
  7. python中options类_python命令行参数解析OptionParser类用法实例
  8. CodeSmith 介绍
  9. UVa-11137 Ingenuous Cubrency
  10. pyodbc mysql_pyodbc and mySQL
  11. Xbox360 手柄通过网络远程控制树莓派
  12. vue+高德离线地图vue-amap开发
  13. 【CTA】CTA认证要求打开日历时提示联系人权限确认
  14. JXL开发Excel文档中文教程
  15. 数字化转型的趋势、挑战与战略
  16. 基于c#条码打印软件源代码 可选择打印机,可选择标签
  17. java 外文翻译_计算机 java 外文翻译 外文文献 英文文献
  18. java并行任务,Java 并发编程学习(五):批量并行执行任务的两种方式
  19. 代码制作数字流星雨_用C语言编写流星雨程序
  20. 【开发/调试工具】【Windows】嵌入式程序员常用工具类软件/网址一览

热门文章

  1. 最新c3p0所有jar包(完整版)
  2. mac 下载、安装、配置mysql详细教程
  3. WZOI-313甲流病人初筛
  4. linux 中增加路由(route)命令详解
  5. 文件在上传过程中发生异常服务器端,文件上传服务器端
  6. js 获取汉字字符串长度
  7. 什么是IOC和AOP?
  8. python提取word内容并写入excle
  9. 计算机教育学术交流会
  10. 博途1200PLC由丝杠位移速度计算电机转速(moveVel_TO_motorSpeed功能块)