QStringList
1. 初始化和基本操作
创建 QStringList 对象
1 // 1. 默认构造函数创建空列表 2 QStringList list1; 3 4 // 2. 使用初始化列表(C++11) 5 QStringList list2 = { "Arial","Helvetica","Times" }; 6 7 //3.使用 << 运算符添加元素 8 QStringList list3; 9 list3 << "Apple" << "Banana" << "Cherry"; 10 11 //4.从另一个QStringList 创建 12 QStringList list4(list2); 13 14 //5.从单个字符串创建 15 QStringList list5("SingleString");
添加和删除元素
QStringList 提供了丰富的元素操作函数:
1 QStringList fonts; 2 fonts << "Arial" << "Helvetica"; // 初始添加 3 4 //添加元素 5 fonts.append("Times"); //末尾追加 6 fonts.prepend("Courier"); //开头追加 7 fonts.insert(2, "Verdana"); //指定位置插入 8 9 //删除元素 10 fonts.removeAt(1); //删除指定位置元素 11 fonts.removeOne("Times"); //删除第一个匹配元素 12 fonts.removeAll("Arial"); // 删除所有匹配元素 13 fonts.removeFirst(); // 删除第一个元素 14 fonts.removeLast(); // 删除最后一个元素 15 16 //清空列表 17 fonts.clear();
2. 遍历和访问元素
QStringList 支持多种遍历方式,你可以根据场景选择最合适的:
索引遍历
1 //索引遍历 2 3 //方式1:使用at()函数(有边界检查) 4 for (int i = 0; i < fonts.size(); i++) 5 { 6 QString str = fonts.at(i); 7 } 8 9 // 方式2:使用 operator[](性能更好,但需要自行确保索引有效) 10 for (int i = 0; i < fonts.size(); i++) 11 { 12 QString str = fonts[i]; 13 }
迭代器遍历
1 QStringList fonts = { "Arial", "Helvetica", "Times" }; 2 3 // Java 风格迭代器 4 QStringListIterator javaITerator(fonts); 5 while (javaITerator.hasNext()) 6 { 7 QString str = javaITerator.next(); 8 } 9 10 //STL 风格迭代器 11 QStringList::const_iterator stlIterator; 12 for (stlIterator=fonts.constBegin();stlIterator!=fonts.constEnd();++stlIterator) 13 { 14 QString str = *stlIterator; 15 } 16 for (const QString& font : fonts) 17 { 18 QString str = font; 19 }
访问特定元素
1 QStringList fruits = { "Apple","Banana","Cherry" }; 2 3 QString first = fruits.first();// 第一个元素:"Apple" 4 QString last = fruits.last(); // 最后一个元素:"Cherry" 5 QString atIndex = fruits.at(1); // 索引1的元素:"Banana" 6 7 // 安全访问,提供默认值 8 QString value5 = fruits.value(5, "Unknown"); // 索引5不存在,返回"Unknown" 9 QString value1 = fruits.value(1, "Unknown"); // 索引1存在,返回"Banana"
3. 实用字符串操作
拼接和分割字符串
1 QStringList fonts = { "Arial", "Helvetica", "Times" }; 2 QString joined = fonts.join(",");//结果:Arial,Helvetica,Times 3 4 // 将字符串分割成字符串列表 5 QString data = "Apple,Banana,Cherry"; 6 QStringList list = data.split(",");// 结果三个元素:["Apple", "Banana", "Cherry"] 7 QStringList list1 = data.split(",");//结果一个元素["Apple,Banana,Cherry"] 8 9 //分割时跳过空部分 10 QString dataWithEmpty = "Apple,Banana,,Cherry"; 11 //使用 Qt5.15.2 旧版本 12 //Qt5.14中,QString::SplitBehavior已经被标记为废弃,并建议使用Qt::SplitBehavior 13 QStringList list2 = data.split(",", Qt::SkipEmptyParts); 14 // 结果:["Apple", "Banana", "Cherry"]
过滤字符串
1 QStringList names = { "Bill Murray", "John Doe", "Bill Clinton" }; 2 3 //基于子字符串过滤 4 QStringList billNames = names.filter("Bill"); 5 // 结果:["Bill Murray", "Bill Clinton"] 6 7 // 基于正则表达式过滤 8 QStringList result = names.filter(QRegularExpression("C.")); 9 // 结果:["Bill Clinton"] 10 11 //区分大小写的过滤 12 //CaseInsensitive(不区分大小写) 13 QStringList caseSensitiveResult1 = names.filter("bill", Qt::CaseInsensitive); 14 // 结果:["Bill Murray", "Bill Clinton"] 15 //CaseSensitive(区分大小写) 16 QStringList caseSensitiveResult2 = names.filter("bill", Qt::CaseSensitive); 17 //结果:元素为空
查找和替换
QStringList list = { "Java", "Android", "Qt Creator", "Java", "C++" };
//查找元素
int firstIndex = list.indexOf("Java");//返回:0
int lastIndex = list.lastIndexOf("Java");//返回3
bool contains1 = list.contains("Android");//结果:true
bool contains2 = list.contains("Android2");//结果:false
//批量替换
QStringList files= { "$QTDIR/src/moc/moc.y", "$QTDIR/src/moc/moc.l" };
files.replaceInStrings("$QTDIR", "123333");
//结果:["123333/src/moc/moc.y","123333/src/moc/moc.l"]
4. 高级操作
排序和去重
1 QStringList languages = {"Java", "C++", "Python", "Java", "JavaScript"}; 2 3 // 排序 4 languages.sort(); 5 // 结果:["C++", "Java", "Java", "JavaScript", "Python"] 6 7 // 去重 8 int removedCount = languages.removeDuplicates(); 9 // 结果:["C++", "Java", "JavaScript", "Python"], removedCount = 1 10 11 // 获取子列表 12 QStringList midList = languages.mid(1, 2); // 从索引1开始取2个元素
判断是否为空
1 { 2 QStringList stringList = { "Hello", "World" }; 3 4 bool IsEmpty = stringList.isEmpty();//结果是false 5 } 6 { 7 QStringList stringList ; 8 9 bool IsEmpty = stringList.isEmpty();//结果是true 10 }
//元素个数
1 //元素个数 2 QStringList stringList = { "Hello", "World" }; 3 int Count = stringList.size();
💎 核心要点
QStringList 的核心优势在于它提供了大量专为字符串操作设计的便捷方法,远比通用的 QList<QString>更加强大和易用

浙公网安备 33010602011771号