QList

0、说明

QList<T>

一个QList是存储相同类型一组数据的列表。

QStringList是从QList<String>继承而来,并添加了一些好用的方法,如join()、filter、split()。

1)构造

QList<QString> list = { "one", "two", "three" };

2)增删

insert(), replace(), removeAt(), move() 和 swap()。

append(), operator<<(), operator+=(), prepend(), removeFirst() 和 removeLast()

list << "four" << "five";

3)访问

list[i] 与 list.at(i)

at比[ ]速度快,因为不会深拷贝

访问并移除

takeAt(), takeFirst(), and takeLast()

4)查找

indexOf() 、 lastIndexOf()

5)迭代器

Java样式:QListIterator 和 QMutableListIterator

STL样式:QList::const_iterator 和 QList::iterator

6)迭代

//①
for (int i = 0; i < list.size(); ++i) {
if (list.at(i) == "Jane")
cout << "Found Jane at position " << i << Qt::endl;
} //②
while (!list.isEmpty())
delete list.takeFirst();

1、模块和加载项

Header: #include <QList>
qmake: QT += core
Inherited By:

QByteArrayListQItemSelectionQQueue, and QStringList

2、构造

QList<QString> list = { "one", "two", "three" };
QList(QList<T> other) 另一个List的副本
QList() 空List

5、静态方法

QList<T> fromVector(const QVector<T> &vector) 从Vector转化

6、实例方法

返回值类型

方法

说明

QList<T> &

bool

QList<T>

QList<T> &

QList<T> &

QList<T> &

QList<T> &

bool

T

operator=(QList<T> other)

operator!=(QList<T> other)

operator+(QList<T> other)

operator+=(QList<T> other)

operator+=(T value)

operator<<(QList<T> other)

operator<<(T value)

operator==(QList<T> other)

operator[](int i)

赋值

判断两个QList是否不相等

往List末尾加入另一个QList

往List末尾加入另一个QList

往List末尾加入单个元素

往List末尾加入另一个QList

往List末尾加入单个元素

判断两个QList是否相等

list[i]提取索引i

void

append(T value)

append(QList<T> value)

往List最后添加元素,可以一次添加一个,也可以一次添加一个List
T at(int i) 访问
T back() 最后一个元素

QList::iterator

QList::const_iterator

begin() STL迭代器,指向第一个元素
QList::const_iterator cbegin() const STL迭代器,指向第一个元素
QList::const_iterator cend() const STL迭代器,指向最后一个元素之后的逻辑元素
void clear() 清空List
QList::const_iterator constBegin() const STL迭代器,指向第一个元素
QList::const_iterator constEnd() const STL迭代器,指向最后一个元素之后的逻辑元素
bool contains(T value) List中是否包含指定元素
int

count(T value)

count()

统计数量
QList::const_reverse_iterator crbegin() const STL逆序迭代器,指向逆序第一个元素
QList::const_reverse_iterator crend() const STL逆序迭代器,指向逆序最后一个元素之后的元素
bool empty() 是否为空

QList::iterator

QList::const_iterator

end() STL迭代器,指向最后一个元素之后的逻辑元素
bool  endsWith(T value) List是否以value结尾
 QList::iterator

erase(QList::iterator pos)

erase(QList::iterator begin, QList::iterator end)

迭代器,移除指定元素
 T first() 第一个元素
 T front() 等同于first()
 int indexOf(T value, int from = 0) 查找List中value第一次出现的位置

void

QList::iterator

insert(int i, T value)

insert(QList::iterator before, T value)

在指定位置插入
 bool isEmpty() 是否为空 
 T last() 最后一个元素
 int lastIndexOf(T value, int from = -1) 逆序查找List中value第一次出现的位置
 int length() List长度,等同于count()
 QList<T> mid(int pos, int length = -1) 从pos开始长度为length的子List
 void move(int from, int to) 把list[from]移动到list[to],原来list[from+1]到list[to]前移
void  pop_back() 等同于removeLast(),移除最后一项
void  pop_front() 等同于removeFirst(),移除第一项
void  prepend(T value) 在开头添加元素
void  push_back(T value) 等同于append(),在末尾添加元素
void  push_front(T value) 等同于prepend(),在开头添加元素

QList::reverse_iterator

QList::const_reverse_iterator

rbegin() STL样式迭代器,指向逆序第一个元素
 int removeAll(T value) 移除List中的所有value
 void removeAt(int i) 移除list[i]
void  removeFirst() 移除第一个元素
void  removeLast() 移除最后一个元素
 bool removeOne(T value) 移除List中的第一个value

QList::reverse_iterator

QList::const_reverse_iterator

rend() STL样式逆序迭代器,指向逆序最后一个元素
 void replace(int i, T value) 替换指定位置的元素,等同于list[i]=value
void  reserve(int alloc) 保留alloc个元素的空间
 int size() List中的元素数
 bool startsWith(T value) List是否以value开始
 void swap(QList<T> &other) 交换两个List的元素
void  swapItemsAt(int i, int j) 交换List中位置i、j的元素
 T takeAt(int i) 移除并返回list[i]
takeFirst() 移除并返回第一个元素
takeLast() 移除并返回最后一个元素
QVector<T>  toVector() QList转QVector
 T

value(int i)

value(int i, T defaultValue)

等同于list[i],第二个方法指定如果不存在这个元素时返回的默认元素

QStringList

0、说明

专门存储String的List。

QStringList继承自QList<QString>,所有QList的方法都可以用于QStringList,不过QStringList还额外提供了一些更方便的方法。

1)初始化

QStringList fonts = { "Arial", "Helvetica", "Times" };

2)添加元素

insert() 、append()、 operator+=() 、operator<<()

其中operator<<()最方便,且能一次加多个元素:

fonts << "Courier" << "Verdana";

3)迭代

//①索引,标准C++ for循环
for (int i = 0; i < fonts.size(); ++i)
cout << fonts.at(i).toLocal8Bit().constData() << Qt::endl; //②Java样式迭代器
QStringListIterator javaStyleIterator(fonts);
while (javaStyleIterator.hasNext())
cout << javaStyleIterator.next().toLocal8Bit().constData() << Qt::endl; //③STL样式迭代器
QStringList::const_iterator constIterator;
for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd();
++constIterator)
cout << (*constIterator).toLocal8Bit().constData() << Qt::endl;

4)连接

用指定分隔符连接:join( seq )

    QStringList fonts = ["Arial", "Helvetica", "Times", "Courier"]
QString str = fonts.join(", ");
// str == "Arial, Helvetica, Times, Courier"

首尾连接:+

5)分割:split( seq )

    QStringList list;
list = str.split(',');
// list: ["Arial", "Helvetica", "Times", "Courier"]

6)排序:sort()

7)筛选:filter()

提取包含指定字串、指定正则表达式的子串

8)查找:contains()、indexOf()、lastIndexOf()

这三个函数功能分别是:是否包含指定字串、指定子串的第一个位置、逆向查看指定子串的第一个位置

9)替换:replaceInStrings()

对QStringList中的每个QString采用同一个替换方法,相当于对List中的所有QString调用QString::replace()方法:

    QStringList files;
files << "$QTDIR/src/moc/moc.y"
<< "$QTDIR/src/moc/moc.l"
<< "$QTDIR/include/qconfig.h"; files.replaceInStrings("$QTDIR", "/usr/lib/qt");
// files: [ "/usr/lib/qt/src/moc/moc.y", ...]

1、模块和加载项

Header: #include <QStringList>
qmake: QT += core
Inherits: QList

2、构造

QStringList(InputIterator first, InputIterator last) 用迭代器中[first , last)中的内容构造QStrintList,该InputIterator的内容必须是QString
QStringList(std::initializer_list<QString> args)

这种构造方法说明可以用

QStringList sl = { "Apple" , "Banana" , "Orange" };

形式来构造QStringList

QStringList(QList<QString> other) 用一个QList<QString>来构造QStringList
QStringList(QString str) 构造只有单个QString元素str的QStringList
QStringList() 构造空QStringList

6、实例方法

除了所有QList的方法外,还有一些QStringList独有的方法,这里只单列出后者:

返回值类型

方法

说明

QStringList &

operator=(QList<QString> other)

operator+(QStringList other)

operator<<(QString str)

operator<<(QStringList other)

operator<<(QList<QString> other)

赋值

连接

用<<往QStringList中加元素,可以一次加一个QString,也可以一次加一个List或QStringList中的所有元素

 bool contains(QString str, Qt::CaseSensitivity cs = Qt::CaseSensitive) 是否包含指定QSTRING
 QStringList

filter(QString str, Qt::CaseSensitivity cs = Qt::CaseSensitive)

filter(QRegExp rx)

filter(QRegularExpression re)

筛选所有符合要求的子串构成新的QStringList,后两项说明可以用正则
 int

indexOf(QRegExp rx, int from = 0)

indexOf(QRegularExpression re, int from = 0)

返回第一个符合正则的子串的位置
QString 

join(QString separator)

join(QChar separator)

用指定分隔符连接QStringList中的所有QString
 int

lastIndexOf(QRegExp rx, int from = -1)

lastIndexOf(QRegularExpression re, int from = -1)

逆向查找,返回第一个符合正则的子串的位置
int   removeDuplicates() 移除所有List中所有相同的QString,只保留一个
 QStringList &

replaceInStrings(QString before, QString after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

replaceInStrings(QRegExp rx, const QString &after)

replaceInStrings(QRegularExpression re, const QString &after)

用相同规则对List中所有QString进行替换
void   sort(Qt::CaseSensitivity cs = Qt::CaseSensitive) 排序

Qt:QList、QStringList的更多相关文章

  1. QT:异常、错误

    1.Unknown module(s) in QT: xxx 原因1:我们的QT中没有安装这个Module 解决方法:Unknown module(s) 与MaintenanceTool.exe更新. ...

  2. Qt:QDateTime、QDate、QTime与QDateTimeEdit

    时间日期是经常遇到的数据类型,Qt中的时间日期类如下: QTime:时间类型,只表示时间,如15:23:13: QDate:日期类型,只表示日期,如2017-4-5: QDateTime:日期时间类型 ...

  3. Qt:QFile、QIODevice

    QFile 0.说明 QFile是读写文件的类,这里的文件包括文本文件.二进制文件.资源文件. 通常情况下,文件读写使用QFile.QTextStream.QDataStream就够了. file n ...

  4. QT:QString、QByteArray和char *的转换 【转载】

    原文网址:http://blog.csdn.net/light1028/article/details/7899541 第一种,数据流的方式,这里只说从QByteArray转向QString. QBy ...

  5. Qt中容器类应该如何存储对象(最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定义,建议采用 智能指针QSharedPointer)

    Qt提供了丰富的容器类型,如:QList.QVector.QMap等等.详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int.QString等.如果我们 ...

  6. Qt 学习之路 2(42):QListWidget、QTreeWidget 和 QTableWidget

    Qt 学习之路 2(42):QListWidget.QTreeWidget 和 QTableWidget 豆子 2013年2月5日 Qt 学习之路 2 38条评论 上一章我们了解了 model/vie ...

  7. Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

    转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...

  8. Qt 学习之路 2(12):菜单栏、工具栏和状态栏

    Home / Qt 学习之路 2 / Qt 学习之路 2(12):菜单栏.工具栏和状态栏 Qt 学习之路 2(12):菜单栏.工具栏和状态栏  豆子  2012年9月10日  Qt 学习之路 2  2 ...

  9. Zynq7000开发系列-6(QT开发环境搭建:Ubuntu、Zynq)

    操作系统:Ubuntu14.04.5 LTS 64bit Qt:Qt 5.4.2 (qt-opensource-linux-x64-5.4.2.run.qt-everywhere-opensource ...

随机推荐

  1. linux文件权限全面解析

    目录 linux文件权限全面解析 一:linux文件的权限有哪些? 1,权限分为3个部分 2,权限位 3,每一个权限拥有一个数字编号 4,在添加权限的时候,可以将权限加起来 5,linux添加权限命令 ...

  2. Vue3.2中的setup语法糖,保证你看的明明白白!

    vue3.2 到底更新了什么? 根据原文内容的更新的内容主要有以下 5 块: 1.SSR:服务端渲染优化.@vue/server-renderer包加了一个ES模块创建, 与Node.js解耦,使在非 ...

  3. Java虚拟机的意义

    什么是Java虚拟机? 作为程序员,大家都知道写的代码都是在Java虚拟机上运行的,但大家是否知道,Java虚拟机又是什么呢? 先看看网上搜到有关JAVA虚拟机的介绍 : 虚拟机是一种抽象化的计算机, ...

  4. Docker容器启动失败 Failed to start Docker Application Container Engine

    1.在k8s mster节点执行 1.kubectl get nodes 发现node节点没起来 [root@guanbin-k8s-master ~]# kubectl get nodes NAME ...

  5. Ajax不允许缓存方法

    AJAX请求后台时会自动缓存,客户端发起请求首先请求缓存,第一次请求即由缓存再请求服务器,返回数据时同样先返回到缓存再展示再客户端.但是如果数据要求随时性呢,数据变化频率高呢?那么如何不让ajax设置 ...

  6. Serializable接口中serialVersionUID字段的作用

    序列化运行时使用一个称为 serialVersionUID 的版本号与每个可序列化类相关联,该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类. 如果接收者加 ...

  7. css最终章之浮动、定位、溢出属性处理、z-index属性、透明度

    上期内容回顾 CSS简介 # 主要就是给HTML标签添加样式 # 固定语法结构 选择器 {属性名1:属性值;属性名2:属性值} 三种引用方式 1.link标签引入外部css文件(最正规) 2.HTML ...

  8. c语言数据结构,你可能还不知道的顺序表

    数据结构顺序表 顺序表定义 1,前言 线性表的顺序存储又称为顺序表.它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻.其最大的特点就是:元素的逻辑 ...

  9. [GWCTF 2019]babyvm re

    BABYVM 基于虚拟机操作的一个题 明面上的check函数和加密逻辑都是假的 操作码 重点分析这个vm 0xF5, 0xF1, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xF2, ...

  10. 手把手教你使用HarmonyOS本地模拟器

    2021年的华为开发者大会(HDC2021)上,我们随DevEco Studio 3.0 Beta1版本发布首次推出了本地模拟器(也称为Local Emulator),支持模拟手机品类. 我们通过下面 ...