QStringList类提供字符串列表。
QStringList继承自QList<QString>。与QList一样,QStringList是隐式共享的。它提供了快速的基于索引的访问以及快速的插入和删除。将字符串列表作为值参数传递既快速又安全。
QList的所有功能也适用于QStringList。例如,你可以使用isEmpty()来测试列表是否为空,你可以调用append()、prepend()、insert()、replace()、removeAll()、moveAt()、remoteFirst()、raveLast()和removeOne()等函数来修改QStringList。此外,QStringList提供了一些方便的函数,使处理字符串列表更容易。
一、基本概念
类定义:QStringList 继承自 QList<QString>,因此它拥有 QList 的所有功能和特性,并针对字符串列表进行了优化。
用途:用于存储和操作一系列的 QString 对象。
二、基本操作
1. 创建和初始化
QStringList list; // 创建一个空的 QStringList
QStringList listWithElements = {"Apple", "Banana", "Cherry"}; // 使用初始化列表
QStringList listFromSingleString = QStringList() << "Single Item"; // 使用 << 操作符添加单个元素
2. 添加和移除元素
list << "Date"; // 在列表末尾添加元素
list.prepend("Orange"); // 在列表开头添加元素
bool removed = list.removeOne("Banana"); // 移除列表中第一个匹配的元素,返回是否成功
list.removeAt(0); // 移除指定索引的元素
3. 访问元素
QString firstItem = list.first(); // 获取第一个元素
QString lastItem = list.last(); // 获取最后一个元素
QString itemAtIndex = list.at(2); // 通过索引访问元素,索引从0开始
foreach(QString item, list) { // 遍历列表
qDebug() << item;
}
for(int i = 0; i < list.size(); ++i) {
qDebug() << list[i]; // 使用 [] 操作符访问元素
}
4. 排序和查找
list.sort(); // 默认按字典顺序排序
// 使用自定义比较函数排序
bool compare(const QString &s1, const QString &s2) {
return s1.toLower() < s2.toLower(); // 不区分大小写的比较
}
list.sort(compare);
int index = list.indexOf("Cherry"); // 查找元素并返回索引,未找到返回-1
三、高级特性
1. 字符串分割与合并
QString text = "Apple,Banana,Cherry";
QStringList listFromSplit = text.split(","); // 使用split方法分割字符串
QString joinedText = listFromSplit.join(", "); // 使用join方法合并列表,可指定分隔符
2. 过滤和筛选
虽然 QStringList 没有直接的过滤函数,但可以使用 std::copy_if(需要包含 <algorithm> 和 <iterator>)或 Qt 的 QFilterProxyModel(针对更复杂的模型/视图编程)来实现筛选功能。
3. 字符串替换
虽然 QStringList 本身不提供直接的字符串替换功能,但你可以遍历列表并对每个元素使用 QString 的 replace 方法。
注意事项
1.当你对 QStringList 进行修改时(如添加、移除元素),其内部指针可能会重新分配,因此保持对元素的直接引用或指针可能不安全。
2.排序时,如果列表很大,应考虑排序操作的性能影响。
原文链接:https://blog.csdn.net/weixin_45843323/article/details/140138878