qt-C++笔记之QStringList、QList<QString>、QString、QChar、QList<QChar>区别

qt-C++笔记之QStringList、QList、QString、QChar、QList区别

—— 杭州 2024-01-30 凌晨0:27


请添加图片描述

参考博文:qt-C++笔记之QStringList

code review!

文章目录

  • qt-C++笔记之QStringList、QList<QString>、QString、QChar、QList<QChar>区别
    • 1.Qt的字符容器类
    • 1.QString和 QList<QChar>的区别
      • QString
      • QList<QChar>
    • 2.QStringList 和QList<QString>的区别
      • QStringList
      • QList<QString>

1.Qt的字符容器类

在这里插入图片描述

—— 《Qt程序设计基础 基于银河麒麟桌面操作系统》

1.QString和 QList的区别

QStringQList<QChar> 是 Qt 中的两个不同的类,它们代表了不同的概念和用途:

QString

  • QString 是一个高级的字符串处理类,专门用于处理和表示文本。
  • 它内部使用 Unicode 编码,因此可以容易地处理国际化文本。
  • QString 提供了大量的字符串相关操作,如拼接、分割、搜索、替换、编解码等。
  • 它是隐式共享的,这意味着当你拷贝一个 QString 对象时,实际上并不会立即复制数据,只有在需要修改时才会进行复制(写时复制)。
  • QString 对象是连续存储的,提供了快速的索引访问和高效的内存使用。

QList

  • QList<QChar> 是一个容器类,用于存储 QChar 对象的列表。
  • QList 是一个模板类,可以用来存储任何类型的元素,QList<QChar> 特指存储 QChar 的列表。
  • QString 不同,QList<QChar> 不提供专门的字符串处理功能,它只是一个通用的列表容器。
  • QList<QChar> 中,字符是单独存储的,每个 QChar 是列表中的一个元素。
  • 使用 QList<QChar> 来处理字符串是低效的,因为它不是为字符串操作优化的,且没有 QString 提供的便捷操作。

总的来说,如果你需要处理文本数据,QString 是更合适的选择,因为它为此提供了大量的方法。而 QList<QChar> 通常用于特定情况,比如当你需要存储字符的集合,并且不需要字符串操作功能时。大多数情况下,推荐使用 QString 来处理和存储文本数据,因为它的设计目的就是简化和优化这些任务。

2.QStringList 和QList的区别

QStringListQList<QString> 都是 Qt 框架中用于处理字符串列表的类,但它们之间有一些细微的区别:

QStringList

  • QStringListQList<QString> 的一个子类,专门用于处理字符串列表。
  • 它提供了一些特定于字符串处理的额外便利方法,如对字符串列表进行排序、过滤、查找等操作。
  • QStringList 可以直接与 Qt 的其他部分(如 GUI 控件)交互,它有一些特化的方法使得和这些组件的集成更加方便。
  • 例如,QStringList 有一个方便的 join() 方法,用于将列表中的所有字符串连接成一个单独的 QString,以及 filter() 方法,用于根据指定条件过滤字符串列表。

QList

  • QList<QString> 是一个通用容器,可以存储任何类型的元素,在这种情况下,它被用于存储 QString 对象。
  • 它没有 QStringList 提供的特化字符串处理方法。
  • 当你不需要 QStringList 提供的特殊字符串处理功能时,可以使用 QList<QString>

在实际应用中,当你的工作仅涉及到字符串集合,并且需要进行字符串特有的操作时,使用 QStringList 是更方便的。如果你正在处理一个更通用的对象集合(即使它恰好是字符串),或者你不需要 QStringList 提供的专门功能,那么使用 QList<QString> 就足够了。在 Qt5 中,QStringList 是非常常见的,但在 Qt6 中,QStringList 已经不是 QList<QString> 的子类了,而是类型别名 QList<QString>。所以,这个区别在 Qt6 中不再适用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PHP抽奖设置中奖率,以及防高并发

一、中奖率,先在后台设定好奖项名称,抽奖份数,以及中奖百分比 奖品表draw 二、 借助文件排他锁,在处理下单请求的时候,用flock锁定一个文件,如果锁定失败说明有其他订单正在处理,此时要么等待要么直接提示用户"服务器繁忙" 阻塞(等待)模式,一般都是用这个模…

五大架构之一:系统架构数据流风格

系统架构数据流风格详细介绍 系统架构数据流风格是一种软件体系结构风格&#xff0c;它强调了系统内部不同部分之间的数据流动。这种风格侧重于描述系统中的数据处理过程&#xff0c;以及数据是如何从一个组件传递到另一个组件的。以下是系统架构数据流风格的详细介绍&#xff…

-1- Python环境安装

1、Python安装 1、Windows安装Python 进入python官网&#xff1a;Welcome to Python.org点击 download——>all releases&#xff1b;建议选择3.7.2版本&#xff08;网页链接&#xff1a;Python Release Python 3.7.2 | Python.org&#xff09;&#xff1b;下拉&#xff0…

云原生数据库GaiaDB的核心技术演进

导读 越来越强调云原生的环境下&#xff0c;存算分离作为一种新的架构理念&#xff0c;已经是大势所趋。新的技术架构带来新的问题和挑战&#xff0c;GaiaDB 在自研过程中采用Quorum分布式协议、高性能网络、高可靠分布式存储引擎等技术实现更高的性能和可用性。 本文针对一系列…

Opencv——霍夫变换

霍夫直线变换 霍夫直线变换(Hough Line Transform)用来做直线检测 为了加升大家对霍夫直线的理解,我在左图左上角大了一个点,然后在右图中绘制出来经过这点可能的所有直线 绘制经过某点的所有直线的示例代码如下,这个代码可以直接拷贝运行 import cv2 as cv import matplot…

element -table,多行或列合并

需求&#xff1a;后端返回的表格数据&#xff0c;如果某列值一样&#xff0c;前端表格样式需要合并他们&#xff0c;需要合并的列的行数未知&#xff08;所以需要有数据后遍历后端数据对需要合并的属性进行计数&#xff09;即动态遍历表格合并 效果 - 重点方法&#xff1b;ta…

《金融电子化》昆仑银行在应用性能监控(APM)平台的实践与探索

《金融电子化》昆仑银行在应用性能监控&#xff08;APM&#xff09;平台的实践与探索 中国人民银行印发的《金融科技发展规划&#xff08;2022-2025年&#xff09;》是对金融科技发展的重要引领。规划强调了金融科技在推动金融行业现代化转型、提升金融服务效率和风险防控水平…

【LeetCode: 25. K 个一组翻转链表 + 链表 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

大数据学习之Redis,十大数据类型的具体应用(三)

目录 3.7 Redis位图&#xff08;bitmap&#xff09; 概念 需求 是什么 说明 能干嘛? 基本命令 3.7 Redis位图&#xff08;bitmap&#xff09; 概念 由0和1状态表现的二进制位的bit数组 需求 用户是否登陆过&#xff1f;Y / N 广告是否被点击过&#xff1f; 钉钉打…

Swift Vapor 教程(项目创建)

The future of web development. 在初次接触 Swift Vapor 时&#xff0c;感觉代码比较清爽&#xff0c;用起来逻辑比较清晰。 困难点&#xff1a; Swift Vapor 使用了JWT管理三方库&#xff0c;比较吃网络Swift Vapor 搭建环境比较复杂初次使用Swift Vapor 尽量不要使用MySql。…

关于 IntelliJ IDEA 中 Schedule for Addition 的问题

IntelliJ IDEA是一款强大的Java集成开发环境&#xff0c;由JetBrAIns公司开发。它以其智能代码编辑、代码分析工具、自动代码补全、强大的调试功能和内建的版本控制等特性而闻名。此外&#xff0c;它还支持Kotlin、Groovy、Scala和Android开发等多种语言和框架。 IntelliJ IDE…

Django模型(五)

一、数据的条件查询 参考文档:QuerySet API 参考 | Django 文档 | Django 1.1、常用检索字段 字段检索,是在字段名后加 __ 双下划线,再加关键字,类似 SQL 语句中的 where 后面的部分, 如: 字段名__关键字 exact :判断是否等于value,一般不使用,而直接使用 =contai…

【QT】坐标系统和坐标变换

目录 1 坐标变换函数 1.1 坐标平移 1.2 坐标旋转 1.3 缩放 1.4 状态保存与恢复 2 坐标变换绘图实例 2.1 绘制3个五角星的程序 2.2 绘制五角星的PainterPath的定义 3 视口和窗口 3.1 视口和窗口的定义与原理 3.2 视口和窗口的使用实例 4 绘图叠加的效果 1 坐标变换函数 QPainter…

高通GAIA V3命令参考手册的研读学习(十三):GAIA通知

如前文《高通GAIA V3命令参考手册的研读学习&#xff08;四&#xff09;》所述&#xff0c;PDU一共有四种&#xff0c;前面已经讲了命令、回应以及错误码&#xff0c;现在来看最后一种&#xff1a;通知。 4. QTIL GAIA通知 通知发送的方向&#xff0c;是由设备发送到移动应用…

CI/CD 管道安全:构建和部署之外的最佳实践

鉴于对快速创新和敏捷方法论采用的需求&#xff0c;持续集成/持续部署 (CI/CD) 管道已成为构建所有 DevOps 流程的基础。他们是高效交付的支柱。 事实上&#xff0c;根据持续交付状态报告&#xff0c;使用 CI/CD 工具与所有指标上更好的软件交付性能相关。 这些管道给组织带…

java代码中调用自定义函数

定义函数 CREATE DEFINERrootlocalhost FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS float BEGINDECLARE SUM FLOAT DEFAULT 0;SET SUMnum1num2;RETURN SUM; END <select id"cunchu" resultType"java.util.Map">SELECT test_fun1(1,2) as r…

MySQL索引原理以及SQL优化

案例 struct index_failure_t{int id;string name;int cid;int score;string phonenumber;}Map<int,index_failure>; 熟悉C的同学知道&#xff0c;上述案例中&#xff0c;我们map底层是一颗红黑树&#xff0c;一个节点存储了一对kv&#xff08;键值对&#xff09;&…

WPF应用程序(.Net Framework 4.8) 国际化

1、新建两个资源字典文件zh-CN.xaml和en-US.xaml&#xff0c;分别存储中文模板和英文模板 (1) zh-CN.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml&q…

机器学习:Logistic回归(Python)

Logistic回归&#xff08;二分类&#xff09; logistic_regression_class2.py import numpy as np import matplotlib.pyplot as pltclass LogisticRegression:"""逻辑回归&#xff0c;采用梯度下降算法 正则化&#xff0c;交叉熵损失函数&#xff0c;实现二分…

机器学习 强化学习 深度学习的区别与联系

机器学习 强化学习 深度学习 机器学习 按道理来说&#xff0c; 这个领域&#xff08;机器学习&#xff09;应该叫做 统计学习 &#xff08;Statistical Learning&#xff09;&#xff0c;因为它的方法都是由概率统计领域拿来的。这些人中的领军人物很有商业头脑&#xff0c; 把…