Qt:QList、QStringList
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: |
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] |
T | takeFirst() | 移除并返回第一个元素 |
T | 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的更多相关文章
- QT:异常、错误
1.Unknown module(s) in QT: xxx 原因1:我们的QT中没有安装这个Module 解决方法:Unknown module(s) 与MaintenanceTool.exe更新. ...
- Qt:QDateTime、QDate、QTime与QDateTimeEdit
时间日期是经常遇到的数据类型,Qt中的时间日期类如下: QTime:时间类型,只表示时间,如15:23:13: QDate:日期类型,只表示日期,如2017-4-5: QDateTime:日期时间类型 ...
- Qt:QFile、QIODevice
QFile 0.说明 QFile是读写文件的类,这里的文件包括文本文件.二进制文件.资源文件. 通常情况下,文件读写使用QFile.QTextStream.QDataStream就够了. file n ...
- QT:QString、QByteArray和char *的转换 【转载】
原文网址:http://blog.csdn.net/light1028/article/details/7899541 第一种,数据流的方式,这里只说从QByteArray转向QString. QBy ...
- Qt中容器类应该如何存储对象(最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定义,建议采用 智能指针QSharedPointer)
Qt提供了丰富的容器类型,如:QList.QVector.QMap等等.详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int.QString等.如果我们 ...
- Qt 学习之路 2(42):QListWidget、QTreeWidget 和 QTableWidget
Qt 学习之路 2(42):QListWidget.QTreeWidget 和 QTableWidget 豆子 2013年2月5日 Qt 学习之路 2 38条评论 上一章我们了解了 model/vie ...
- Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析
转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...
- Qt 学习之路 2(12):菜单栏、工具栏和状态栏
Home / Qt 学习之路 2 / Qt 学习之路 2(12):菜单栏.工具栏和状态栏 Qt 学习之路 2(12):菜单栏.工具栏和状态栏 豆子 2012年9月10日 Qt 学习之路 2 2 ...
- 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 ...
随机推荐
- a 标签一些特殊用法
发邮件 <a href="mailto:youemail@mail.com?subject=邮件标题&body=邮件内容">告诉我们</a> 打电话 ...
- Clusternet:一款开源的跨云多集群云原生管控利器!
作者 徐迪,Clusternet 项目发起人,腾讯云容器技术专家. 摘要 Clusternet (Cluster Internet)是一个兼具多集群管理和跨集群应用编排的开源云原生管控平台,解决了跨云 ...
- electron-vue 项目添加启动loading动画问题
前言 electron-vue脚手架搭建的项目,在开发阶段可能你注意不到项目启动慢的问题,但是在build 生成的exe可执行文件,启动后,要反应很久才能进入到app.vue 中加载的页面,体验性很差 ...
- kindle序列号对应版本
序列号前缀 型号全称 型号简称 支持越狱 B001, Kindle 1 K1 - B101 B002 Kindle 2 U.S. (Sprint) K2 - B003 Kindle 2 Interna ...
- rsync实时备份监控命令(详细大全)
目录 一:rsync介绍 1.rsync简介 2.rsync特性 3.rsync应用场景 4.rsync的传输方式 5.Rsync传输模式 二:RSYNC使用参数 三:参数使用案例 一:rsync介绍 ...
- MySQL读写问题(锁)
一.概述 读-读:并发不存在问题,不需要加锁 写-写:并发存在问题,可能会造成脏写(一个事务没有写完,另一个事务也对相同的数据进行写),但是这种情况,任何一种隔离级别都不允许发生,在隔离级别的时候就解 ...
- AndroidStudio项目提交到github最详细步骤【转】
感谢大佬:https://www.cnblogs.com/imqsl/p/6763133.html 在使用studio开发的项目过程中有时候我们想将项目发布到github上,以前都是用一种比较麻烦的方 ...
- An incompatible version 1.1.1 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.1.17
[问题现象]: 启动Tomcat时报如下类似错误信息: An incompatible version 1.1.12 of the APR based Apache Tomcat Native lib ...
- C语言中各种输入函数之间的区别
以下内容全部来自Bay(百度百科) scanf的返回值 scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF. 如: scanf("%d%d", &a, ...
- 【第二十三期】春招实习阶段性总结(阿里云已OC)
本人算是一个半路出家找工作的菜鸡了,现在手中阿里云云原生offer.百度度小满offer.腾讯PCG二面环节.美团点评等offer环节.希望我的经历分享能对各位或之后准备春招的同学有帮助. 个人背景 ...