Qt QString详细用法

news2024/11/15 22:36:29

一.基础用法

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.coloradmin.cn/o/1684812.html

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

相关文章

UBUNTU22.04无法安装nvidia-driver-550 依赖于 nvidia-dkms-550 (<= 550.54.15-1)

类似的报错信息&#xff0c;就是卡在了nvidia-dkms-550无法安装 Loading new nvidia-550.40.07 DKMS files… Building for 6.5.0-15-generic Building for architecture x86_64 Building initial module for 6.5.0-15-generic ERROR: Cannot create report: [Errno 17] File e…

项目启动失败,【consul】

如题&#xff0c;启动时项目未能正常启动&#xff0c;但上次都一切正常&#xff0c;日志提示&#xff1a; Consul service ids must not be empty, must start with a letter 经过排查是因为consul的consulconfigservice服务假死&#xff0c;导致无法正常获取到配置文件&am…

【全开源】JAVA人力资源招聘社会校招类型招聘系统校园招聘PC端

塑造企业高效招聘新体验 一、源码简介 招聘PC端源码&#xff0c;一款面向企业的招聘管理系统解决方案。它拥有完整的招聘流程管理功能&#xff0c;从职位发布到候选人管理&#xff0c;再到面试安排与结果反馈&#xff0c;所有环节都通过直观易用的界面进行展现&#xff0c;大…

tinyrenderer-移动镜头

同一个点的坐标在不同基坐标系中转换 设 (O, i,j,k)坐标系中点P坐标为 假设基坐标(i,j,k)与(i’,j’,k’)的转换关系为 如图&#xff0c;可以看出 其中(x’,y’,z’)为点P在基坐标(i’,j’,k’)下的坐标&#xff0c;(Ox’,Oy’,Oz’)为(i’,j’,k’)坐标系原点O’在(i,j,k…

【关键字】——register在C语言中的使用

register——寄存器 了解register之前&#xff0c;应该先认识认识寄存器&#xff0c;何为寄存器&#xff1f; 在计算机中&#xff0c;数据可以存储在远程二级存储&#xff08;网盘&#xff0c;服务器&#xff09;&#xff0c;本地二级存储&#xff08;本地磁盘&#xff09;&am…

DOS学习-目录与文件应用操作经典案例-move

欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 move命令不仅能够对文件或目录进行重命名&#xff0c;还可以将文件转移到用户指定的位置。 二.使用 命令格式1&#xff08;重命名&#xff09;:move …

VR直播:改变我们的直播方式,让现场触手可及

VR直播是近期比较火爆的一种直播方式&#xff0c;相信在抖音上我们都刷到过转动手机、变换视角的VR直播&#xff0c;因为形式比较新颖&#xff0c;用户的参与度比较高&#xff0c;一场直播下来用户的打赏也是较为可观的。 不仅仅在直播行业&#xff0c;在众多应用领域中&#…

ARTS Week 29

Algorithm 本周的算法题为 2413. 最小偶倍数 给你一个正整数 n &#xff0c;返回 2 和 n 的最小公倍数&#xff08;正整数&#xff09;。 示例 1&#xff1a;输入&#xff1a;n 5输出&#xff1a;10解释&#xff1a;5 和 2 的最小公倍数是 10 。 实现代码如下&#xff1a; con…

压摆率SR、增益带宽积GBP、开环增益Aol

运放的选型对运放电路的实际效果非常关键&#xff0c;一定要理解运放重要参数的概念。下面几天将对运放的选型进行系统学习并做实验 运放的压摆率&#xff08;Slew Rate&#xff0c;简称SR&#xff09;是指闭环放大器在输入为阶跃信号时&#xff0c;输出电压时间变化率的平均值…

BEVFusion的相机工作流中,图像编码之后FPN+ADP网络的作用

在BEVFusion的相机工作流中&#xff0c;图像编码之后会经过一个FPNADP的网络,那么这个结构的作用是什么呢 FPN大家都很熟悉&#xff0c;就是特征金字塔。但是这里还是贴一些来自GPT的废话 在Bird’s Eye View (BEV) 算法中使用的特征金字塔网络&#xff08;FPN, Feature Pyrami…

鸿蒙OS开发:【一次开发,多端部署】(分栏控件)

一多分栏控件 介绍 本示例分别展示了多场景下&#xff0c;一多分栏控件的响应式变化效果。 本示例分别用到了[SideBarContainer]组件与[Navigation]组件&#xff0c;对应使用场景如下&#xff1a; ABC&#xff1a;即SideBarContainer组件组合Navigation组件AC&#xff1a;S…

SSRF攻击技术

1、SSRF形成原因 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下&#xff0c;SSRF是要目标网站的内部系统。&#xff08;因为他是从内部系统访问的&#xff0c;所有可以通过它攻击外网无法访问的内部系…

03-01-Vue组件的定义和注册

前言 我们接着上一篇文章02-Vue实例的生命周期函数 来讲。 下一篇文章 03-02-Vue组件之间的传值 什么是组件 组件&#xff1a; 组件的出现&#xff0c;就是为了拆分Vue实例的代码量的&#xff0c;能够让我们以不同的组件&#xff0c;来划分不同的功能模块&#xff0c;将来我们…

Windows安装php_ssh2扩展

一、读取PHP信息 先用phpinfo读取使用的php的版本信息 二、下载ssh2扩展 链接&#xff1a;https://windows.php.net/downloads/pecl/snaps/ssh2/1.2-dev/ 点击链接下载对应链接 三、开启扩展 下载好压缩包后&#xff0c;解压缩得到php_ssh2.dll、php_ssh2.pdb文件&#xff…

以太坊(2)——共识机制与挖矿算法

共识机制 ETH采用的是基于GHOST协议的共识机制 "GHOST"&#xff08;Greedy Heaviest-Observed Sub-Tree&#xff09;共识机制&#xff0c;它是以太坊使用的一种改进的区块链共识算法。GHOST共识机制旨在提高链的安全性和效率&#xff0c;通过考虑非主链区块的贡献&…

如何保护Kubernetes集群

2018年黑客入侵了特斯拉在亚马逊上的Kubernetes容器集群。由于该集群控制台未设置密码保护&#xff0c;黑客便得以在一个Kubernetes pod中获取到访问凭证&#xff0c;然后据此访问其网络存储桶S3&#xff0c;通过S3获取到了一些敏感数据&#xff0c;比如遥测技术&#xff0c;并…

llama-factory学习个人记录

框架、模型、数据集准备 1.llama-factory部署 # 克隆仓库 git clone https://github.com/hiyouga/LLaMA-Factory.git # 创建虚拟环境 conda create --name llama_factory python3.10 # 激活虚拟环境 conda activate llama_factory # 安装依赖 cd LLaMA-Factory pip install -…

Vue——开发前的准备和创建一个vue的工程

文章目录 前言安装 Node js1、下载node.js2、安装node.js3、查看是否安装成功 创建 vue 工程Visual Studio Code 配置目录结构 前言 本篇博客主要讲解Vue开发前的环境配置与一些说明。 安装 Node js 环境需要安装配置一个nodejs 的环境。 vue3 最低nodejs 版本要求为 15.0 1…

2024.5.1学习记录

1、代码随想录&#xff1a;贪心刷题 2、react 高级使用( hoc render、props、函数组件、serState 传送门等) 3、游山玩水

linux部署rustdesk

1.拉取RustDesk镜像 sudo docker image pull rustdesk/rustdesk-server2.启动hbbs服务 sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v pwd:/root -td --nethost rustdesk/rustdesk-server hbbs3.启动hbbr服务 sudo dock…