Qt QString详细用法

一.基础用法

1.创建QString对象

QString str1 = "Hello, World!";
QString str2("This is a QString object.");
//一个是等号的重载,一个是拷贝构造,本质上是等价的

 2.获取字符串长度 

int length = str1.length(); // 返回字符串的长度

3.拼接字符串 

QString combinedStr = str1 + " " + str2; // 使用+操作符拼接字符串

 4.字符串比较

if (str1 == str2) {// 字符串相等
} else {// 字符串不相等
}

5.字符串查找 

int index = str1.indexOf("World"); // 查找子字符串的位置

6.字符串替换

QString replacedStr = str1.replace("Hello", "Hi"); // 替换子字符串

7.字符串转换

int num = 123;
QString numStr = QString::number(num); // 将整数转换为字符串

8.字符串拆分

QStringList list = str2.split(" "); // 将字符串按空格拆分成字符串列表
foreach (const QString &str, list) {qDebug() << str;
}

9.字符串转换为数字

QString numStr = "456";
int num = numStr.toInt(); // 将字符串转换为整数

10.字符串转换为字符数组 

QByteArray byteArray = str1.toUtf8(); // 将字符串转换为UTF-8编码的字节数组

11.字符串格式化

QString formattedStr = QString("The value is %1").arg(123); // 格式化字符串

二.使用QString需要注意的点

  1. 字符串的不可变性:QString是不可变的,即一旦创建了一个QString对象,就不能直接修改其内容。任何对QString对象的修改都会返回一个新的QString对象。

  2. 字符串的编码:QString默认使用UTF-16编码存储字符串,但可以通过toUtf8()、toLatin1()等方法将字符串转换为其他编码。

  3. 字符串的拷贝:当对QString对象进行操作时,会涉及到字符串的拷贝。因为QString是不可变的,任何修改操作都会创建一个新的QString对象,而不是在原对象上直接修改。

  4. 字符串的性能:在处理大量字符串时,需要注意QString的性能。频繁的字符串拼接、替换等操作可能会导致性能问题,可以考虑使用QByteArray或QTextStream等类来处理大量字符串。

  5. 字符串的比较:在比较字符串时,需要注意区分大小写或忽略大小写。可以使用QString的compare()方法来进行比较,并指定比较规则。

  6. 字符串的空值检查:在使用QString时,需要注意对空值进行检查,以避免空指针异常。可以使用isEmpty()方法来判断字符串是否为空。

  7. 字符串的转换:在将QString转换为其他类型时,需要注意转换的准确性。比如将QString转换为整数时,需要确保字符串中只包含数字字符。

  8. 字符串的拆分:在拆分字符串时,需要考虑分隔符的处理。可以使用split()方法来按照指定的分隔符拆分字符串,并注意处理可能存在的空字符串。

三.案例练习 

需求:在文本框中输入一段古诗词,可以自动提取每段的第一个字符,并输入到另一个文本框中。

如图所示:

 

代码如下: 

//先检测是否有文本if(ui->text_name->toPlainText().isEmpty()){QMessageBox::information(this,"提示","文本为空,请输入!");}else{//需求:将text里面的文本进行分割,并其每个字串的第一个字符组成一段话QString ret;QString ans=ui->text_name->toPlainText();//进行分割QStringList list=ans.split("\n");int count=list.count();for(int i=0;i<count;i++){ret+=list[i].at(0);}//将ret输入回到lineEdit中ui->lineEdit->setText(ret);}

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

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

相关文章

大模型落地竞逐,云计算大厂“百舸争流”

作者 | 辰纹 来源 | 洞见新研社 从ChatGPT到Sora&#xff0c;从图文到视频&#xff0c;从通用大模型到垂直大模型……经过了1年多时间的探索&#xff0c;大模型进入到以落地为先的第二阶段。 行业的躁动与资本的狂热相交汇&#xff0c;既造就了信仰派的脚踏实地&#xff0c;也…

7.从0做一个vue键盘组件

文章目录 1. 从0做一个键盘组件1.1. 最终效果1.2. 分析1.3. 实现1.4. 如何引用 1. 从0做一个键盘组件 首先是why的问题&#xff1a;为什么需要做键盘组件&#xff1f; 我们目前可知的场景&#xff1a; 在新增账单的时候&#xff0c;需要用到键盘在比如从账单列表页&#xff…

保护共享资源的方法(互斥锁)

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

MagicAnimate: Temporally Consistent Human Image Animation using Diffusion Model

show lab NUS&bytedancehttps://github.com/magic-research/magic-animate 问题引入 输入参考图片 I r e f I_{ref} Iref​和动作序列 p 1 : N [ p 1 , ⋯ , p N ] p^{1:N}[p_1,\cdots,p_N] p1:N[p1​,⋯,pN​]&#xff0c;其中 N N N表示的是帧数&#xff0c;输出的是 …

buuctf的RSA(二)

1.RSA 知道 flag.enc 和 pub.key&#xff0c;典型的加密、解密 将pub,key 改为pub.txt 打开后发现公钥 在RSA公私钥分解 Exponent、Modulus&#xff0c;Rsa公私钥指数、系数(模数)分解--查错网 进行解密 得到e65537 n8693448229604811919066606200349480058890565…

LeetCode 79.单词搜索

原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内…

6款网页表白代码6(附带源码)

6款网页表白代码6 前言效果图及部分源码1.爱心倒计时2.一起看星星3.爱心4.爱心&#xff08;有鼠标移动特效&#xff09;5.爱心&#xff08;高级效果&#xff09;6.爱心&#xff08;3D效果&#xff09; 领取源码下期更新预报 前言 大部分人都有喜欢的人&#xff0c;学会这些表白…

蓝桥杯物联网竞赛_STM32L071KBU6_关于sizo of函数产生的BUG

首先现象是我在用LORA发送信息的时候&#xff0c;左边显示长度是8而右边接收到的数据长度却是4 我以为是OLED显示屏坏了&#xff0c;又或者是我想搞创新用了const char* 类型强制转换数据的原因&#xff0c;结果发现都不是 void Function_SendMsg( unsigned char* data){unsi…

微软Edge

微软Edge浏览器概述 功能介绍 微软Edge是一款基于Chromium开源项目的网页浏览器&#xff0c;旨在提供更快的网页加载速度、更高的安全性和更好的用户体验。它支持多种操作系统&#xff0c;包括Windows、macOS、Android和iOS&#xff0c;能够满足不同用户的需求。Edge浏览器拥…

【Linux】-Zookeeper安装部署[17]

简介 apache ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布式同步、组服务等。 除了为Hadoop和H…

2024最新 Jenkins + Docker 实战教程(四) - 编写自己的Springboot项目实现自动化部署

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

0407放大电路的频率响应

放大电路的频率响应 单时间常数RC电路的频率响应中频响应高频响应低频响应全频域响应 放大电路频率响应概述1. 直接耦合放大电路频域响应阻容耦合放大电路频域响应 4.7.1 单时间常数RC电路的频率响应 4.7.2 放大电路频率响应概述 4.7.3 单级共射极放大电路的频率响应 4.7.4 单级…

TOSHIBA UTLH21 属于Unifi NV系列

TOSHIBA UTLH21 是东芝推出的一款工业控制器&#xff0c;属于Unifi NV系列。 这款控制器代表了东芝在工业自动化领域的一次重要进步&#xff0c;它在功能和性能上都超越了现有的V系列控制器。以下是UTLH21的一些主要特点&#xff1a; 高速逻辑与控制能力&#xff1a;UTLH21具…

Spring框架中获取方法参数名称:DefaultParameterNameDiscoverer

DefaultParameterNameDiscoverer 是Spring框架中用于获取方法参数名称的一个类。在Java中&#xff0c;方法的参数名称通常在编译时会丢失&#xff0c;因为Java字节码并不强制要求保留这些信息。Spring提供了一种机制来恢复这些参数名称&#xff0c;这就是通过DefaultParameterN…

IT行业的现状与未来趋势

这里写目录标题 一、引言二、IT行业的现状三、IT行业面临的挑战四、IT行业的未来趋势五、结论 一、引言 信息技术&#xff08;IT&#xff09;行业在过去几十年中经历了飞速发展&#xff0c;从早期的计算机硬件和软件开发&#xff0c;到如今涵盖云计算、人工智能、大数据、物联…

深度学习之基于Django+Tensorflow卷积神经网络实时口罩检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着全球疫情的持续&#xff0c;佩戴口罩成为了公众日常生活中不可或缺的一部分。特别是在人员密集的…

【python】python社交交友平台系统设计与实现(源码+数据库)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

BEVFuison测试全过程记录

cuda版本10.1 pytorch&#xff1a; 根据cuda版本选择pytorch版本&#xff1a; 1. 创建conda虚拟环境&#xff1a; conda create -y --name mmcv python3.8 conda activate mmcv2. 安装依赖库&#xff1a; pytorch: conda install pytorch1.7.1 torchvision0.8.2 torchaudi…

特征融合篇 | YOLOv8改进之引入轻量级跨尺度特征融合模块CCFM | 源自RT-DETR

前言:Hello大家好,我是小哥谈。CCFM(Cross-Scale Feature Fusion Module)即为跨尺度特征融合模块。这个模块的作用是将不同尺度的特征通过融合操作整合起来,以增强模型对于尺度变化的适应性和对小尺度对象的检测能力。CCFM可以有效地整合细节特征和上下文信息,从而提高模…

2024定制版抢单支付系统源码(开代理自动抢单接单)

随着网络和移动支付技术的不断进步&#xff0c;抢单支付系统已经成为商家和用户进行交易的便利工具。2024定制版抢单支付系统源码为开发者提供了一个可定制化的解决方案&#xff0c;具备开放代理和自动抢单接单功能&#xff0c;帮助用户快速搭建抢单支付平台。本文将为您介绍这…