QLineEdit限制输入固定字节数(UTF-8编码)
setMaxLength(int)只能用来限制输入的字符个数
QLineEdit *editor = new QLineEdit(parent);
editor->setMaxLength(32);
1、如果是单字节字符,如数字,字母等,字符数正好等于字节数
2、如果是多字节字符,UTF8编码时,汉字一般占用3个字节,GBK编码时,汉字占用2个字节。
UTF-8 编码简介
UTF-8 是一种变长编码,可以表示 Unicode 字符集中的所有字符。UTF-8 中字符的长度可以从1到4个字节不等:
单字节字符(ASCII字符):以 0xxxxxxx 开头。
多字节字符:
第一个字节(起始字节)以 110xxxxx、1110xxxx 或 11110xxx 开头,表示接下来还有多少个延续字节。
延续字节(后续字节)都以 10xxxxxx 开头。
有时候我们想根据字节数对输入框禁止截断,超过32字节就不显示或者禁止输入
输入框内可以输入英文、数字和汉字以及其它字符
如果我们只设置setMaxLength(32),可以输入32个汉字,32个汉字明显不等于32个字节
QString truncateToByteLimit(const QString &text, int maxBytes)//对UTF8编码的汉字或者单字符截断
{QByteArray utf8Text = text.toUtf8();if (utf8Text.size() <= maxBytes){return text;}// 截断到指定的最大字节数,确保不破坏字符int byteCount = 0;for (int i = 0; i < utf8Text.size(); ++i){byteCount++;// 检查是否是多字节字符的开始,并且是否已经达到了最大字节数,非单字节if ((utf8Text[i] & 0xC0) != 0x80 && byteCount >= maxBytes && (utf8Text[i] & 0x80) != 0){// 如果当前字节不是延续字节并且超过了最大字节数,则在此处截断return QString::fromUtf8(utf8Text.left(i));}else if((utf8Text[i] & 0xC0) == 0x80 && byteCount >= maxBytes)//延续字符{if((utf8Text[i-1] & 0xC0) != 0x80 && i>0 && (utf8Text[i-1] & 0x80) != 0)//开始字符{return QString::fromUtf8(utf8Text.left(i-1));}else if( i>0 && (utf8Text[i-1] & 0x80) == 0)//单字符,这种情况可以不用判断{return QString::fromUtf8(utf8Text.left(i));}}else if((utf8Text[i] & 0x80) == 0 && byteCount > maxBytes)//单字符{return QString::fromUtf8(utf8Text.left(i));}}// 如果所有字符都符合限制,返回原始文本return QString::fromUtf8(utf8Text);
}
使用:绑定QLineEdit的信号textChanged(),并在槽函数进行处理
QByteArray QString::toUtf8() const 返回的是字符串所占用的字节数
connect(lineEditor, &QLineEdit::textChanged, [lineEditor](const QString &text) {if (text.toUtf8().size() > lineEditor->maxLength()) {// 如果超过限制,截断文本QString truncatedUtf8 = truncateToByteLimit(text,lineEditor->maxLength());lineEditor->setText(truncatedUtf8);}});
相关文章:
QLineEdit限制输入固定字节数(UTF-8编码)
setMaxLength(int)只能用来限制输入的字符个数 QLineEdit *editor new QLineEdit(parent); editor->setMaxLength(32); 1、如果是单字节字符,如数字,字母等,字符数正好等于字节数 2、如果是多字节字符,UTF8编码时࿰…...

基于ubuntu的mysql 8.0安装教程
文章目录 1.查看版本2.切换到root账户3.下载安装包4.问题的解决5.查看是否解压成功6.安装我们的发布包7.更新包的内容8.下载mysql9.查看mysql的状态10.设置开机自启动11.登录mysql 公司里面的mysql根本不会出现在windows操作系统上面,下面我们演示的就是如何在ubunt…...
K8s ConfigMap的基础功能介绍
在 Kubernetes 中,ConfigMap 是一种用于管理配置信息的资源对象,它允许你将 配置信息与代码解耦,方便管理和更新应用配置,而无需重新构建镜像或重启服务。 ConfigMap 的功能 存储配置信息: 可以以 键值对 的形式存储配…...

Linux——Shell
if 语句 格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi 单分支 if 条件表达式; then 命令 fi 示例: #!/bin/bash N10 if [ $N -gt 5 ]; then echo yes fi # bash test.sh yes 双分支 if 条件表达式; then 命令 else 命令…...

armsom产品编译烧录Linux固件
1、开发环境及工具准备 Rockchip Linux 软件包:linux-5.10-gen-rkr4 主机: 安装VMware搭建虚拟机,版本为Ubuntu 20.04 (硬盘容量大于100G) 安装远程连接工具MobaXterm(可连接虚拟机方便文件传输) 2、S…...

VSCode:Markdown插件安装使用 -- 最简洁的VSCode中Markdown插件安装使用
VSCode:Markdown插件安装使用 1.安装Marktext2.使用Marktext 本文,将在Visual Studio Code中,安装和使用Markdown插件,以Marktext插件为例。 1.安装Marktext 打开VSCode,侧边栏中找到扩展模块(或CtrlShiftX快捷键)&am…...
AI 行业发展趋势:科技创新引领未来变革
在当今数字化时代,人工智能(AI)行业正以前所未有的速度蓬勃发展,深刻地改变着我们的生活、工作和社会格局。从基础技术的突破到广泛的应用场景拓展,AI 展现出了一系列令人瞩目的发展趋势,预示着一个充满无限可能的未来。 一、技术创新持续突破 模型规模与性能提升 AI 模…...

FB爆款打法实操经验总结
在进行Facebook广告投放时,有效的预算控制、素材测试、广告效果评估和lookalike受众的管理是至关重要的。通过科学的方法和策略,您可以在竞争激烈的市场中实现更好的业绩。 01 预算控制 测试阶段的广告不稳定性:在投放广告的初期,…...

微信小程序TTS解决方案
微信小程序原生语音合成 API(基础且简单) 介绍:微信小程序提供了基础的语音合成能力。通过wx.createInnerAudioContext()等相关API,可以实现简单的语音播放功能。不过它主要是用于音频播放,对于完整的文本到语音&#…...

centos stream 8下载安装遇到的坑
早在2020年12月。CentOS 官方发文宣称:“CentOS项目的未来是 CentOS Stream 明年我们会将重点从CentOS Linux 转移到CentOS Stream 它紧随当前 RHEL 版本之前。CentOS Linux 8 作为 RHEL 8 的重建,将于 2021 年底结束。CentOS Stream 在该日期之后继续&a…...
计算机网络——期末复习(1)背诵
背诵 交换机与路由器:交换机连接同一子网,利用帧中的目的物理地址转发帧,工作在数据链路层;路由器连接不同子网,利用IP数据报中的目的IP地址转发IP数据报,工作在网络层。五层的任务:࿰…...

AORO M6 Pro单北斗防爆终端全面国产化,关键技术不再“卡脖子”
全球科技竞争日益激烈,核心技术自主创新已成为国家发展的战略基石。面对关键技术被“卡脖子”的风险,中国科技企业正加速推进信息技术应用创新战略,力求在关键领域实现自主可控。遨游通讯推出的一款融合单北斗、鸿蒙系统、5G国产芯片的防爆终…...
ubuntu 卸载 MySQL
1. 卸载 MySQL 1.1 停止 MySQL 服务 首先,停止 MySQL 服务: sudo systemctl stop mysql 1.2 卸载 MySQL 包 使用 apt-get 命令卸载 MySQL 包: sudo apt-get remove --purge mysql-server mysql-client mysql-common mysql-server-core-* my…...

6、基于SpringBoot的网上购物系统
摘 要 随着我国经济的飞速发展,人们的生活速度明显加快,在餐厅吃饭排队的情况到处可见,近年来由于新兴IT行业的空前发展,它与传统餐饮行业也进行了新旧的结合,很多餐饮商户开始通过网络建设订餐系统,通过专…...

AMS1117芯片驱动电路·降压芯片的驱动电路详解
编写不易,仅供学习,请勿搬运,感谢理解 AMS1117驱动电路 很常用的一种LDO降压芯片,LDO(Low Dropout Regulator)降压芯片是线性稳压器,这种IC因为内部集成的不是开关电路,只能将输入与输出的电压差值通过内部…...

数据仓库工具箱—读书笔记02(Kimball维度建模技术概述02、事实表技术基础)
Kimball维度建模技术概述 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 第二章前言部分作者提到:技术的介绍应该通过涵盖各种行业的熟悉的用例展开(赞同…...

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期
SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期 在SAP内部用 YYYYMMDD没有问题 外部传入参数...

Linux-ubuntu点LED灯C语言版
一,C语言点灯 1.寄存器配置 设置为SVC模式,复用寄存器设置GPIO1-IO003,设置电气属性,设置为输出模式。 2.软件 汇编语言对模式设置,并且将堆栈指针指向主程序: .global _start_start: /*设置为svr模式 */mrs …...

ASP.NET|日常开发中数据集合详解
ASP.NET|日常开发中数据集合详解 前言一、数组(Array)1.1 定义和基本概念1.2 数组的操作 二、列表(List<T>)2.1 特点和优势2.2 常用操作 三、字典(Dictionary<K, V>)3.1 概念和用途…...

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架
Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架 Pytest BDD vs Behave:选择最适合的 Python BDD 框架BDD 介绍Python BDD 框架列表Python BehavePytest BDDPytest BDD vs Behave:关键区别Pytest BDD vs Behave:最佳应用场景结…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...