QStringList类的常见方法

本文详细介绍了QStringList类的使用方法,包括增加、合并、拆分字符串,索引、替换、过滤等功能,帮助开发者更高效地进行字符串管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QStringList类提供了一个字符串列表从QList <QString>继承而来,它提供快速索引为基础的接入以及快速插入和清除其成员函数用于操作这个字符串列表如:

append(),insert(), replace(), removeAll(), removeAt(), removeFirst(), removeLast(), and removeOne()等

1.   增加字符串

   可以通过append(),或使用<<,如

   QStringList fonts;

   fonts << "Arial" << "Helvetica" << "Times" << "Courier";

           // fonts:[ "Arial" ,"Helvetica", "Times" , "Courier"]

2.    合并字符串使用join( )

QString str = fonts.join(",");

          // str == "Arial,Helvetica,Times,Courier"

3.   拆分字符串

         QString str = " Arial,Helvetica, ,Times,Courier ";

        QStringList list1 = str.split(",");

        // list1: [ " Arial ", " Helvetica ",” “, " Times ", " Courier " ]

       QStringList list2 = str.split(",", QString::SkipEmptyParts);

       // list2: [ " Arial ", " Helvetica ", " Times ", " Courier " ]

     也就是说如果有QString::SkipEmptyParts,空项不会出现在结果。默认情况下,空项被保留

4.   索引

       IndexOf()函数返回给定字符串的第一个出现的索引。

       而lastIndexOf()函数,返回字符串的最后一次出现的索引。

5.    替换replaceInStrings()

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", ...]

6.     过滤filter()

可以让你提取一个新的列表只包含这些字符串包含一个特定的字符串(或匹配特定正则表达式):

           QStringList list;

           list << "Bill Murray" << "John Doe" << "Bill Clinton";

   QStringList result;

          result = list.filter("Bill");

          // result: ["Bill Murray", "Bill Clinton"]

转:http://bbs.21ic.com/blog-645097-88792.html
### QStringList 的使用方法、属性和功能 #### 1. 基本概念 `QStringList` 是 `QList<QString>` 的特化版本,专用于存储和操作 `QString` 型的对象列表[^1]。它提供了许多方便的方法来管理字符串集合。 --- #### 2. 构造与初始化 以下是 `QStringList` 的常见构造方式: - **默认构造函数** 创建一个空的字符串列表。 ```cpp QStringList list; ``` - **拷贝构造函数** 使用另一个 `QStringList` 对象的内容创建新的列表。 ```cpp QStringList otherList = {"Apple", "Banana"}; QStringList newList(otherList); ``` - **析构函数** 自动释放内存资源。 ~QStringList(); 注意:当不再需要该对象时,其内容会被自动清理[^2]。 --- #### 3. 添加与移除元素 `QStringList` 提供了许多便捷的操作接口来增删改查数据。 - **添加单个元素** ```cpp QStringList list; list << "Orange"; // 或者使用 append 方法 list.append("Grapes"); ``` - **批量添加多个元素** ```cpp QStringList fruits = {"Mango", "Pineapple"}; list += fruits; // 等价于调用 operator+= ``` - **删除指定索引处的元素** ```cpp list.removeAt(0); // 删除第一个元素 ``` - **清空整个列表** ```cpp list.clear(); ``` --- #### 4. 遍历列表 可以采用多种方式进行遍历,推荐现代 C++ 方式的范围循环语法。 ```cpp QStringList colors = {"Red", "Green", "Blue"}; // 范围循环(C++11 及以上) for (const QString &color : colors) { qDebug() << color; } ``` 如果需要修改原始列表中的值,则应去掉常量引用: ```cpp for (QString &color : colors) { color.toUpper(); // 将颜色名称转换为大写形式 } ``` 此外还可以通过传统的下标访问或者迭代器完成相同任务[^3]。 --- #### 5. 字符串匹配与过滤 `QStringList` 支持基于正则表达式或其他条件筛选子集的功能。 - **查找特定项的位置** ```cpp int index = list.indexOf("Banana"); // 返回首次出现位置 (-1 表示未找到) ``` - **判断是否存在某项** ```cpp bool exists = list.contains("Kiwi"); ``` - **按模式过滤** 利用 filter 函数保留符合条件的部分条目。 ```cpp QStringList filtered = list.filter(QRegularExpression("^A.*")); // 开头字母 A 的项目 ``` --- #### 6. 排序与去重 提供内置工具简化这些常用需求。 - **升序排列** ```cpp list.sort(); // 默认字典顺序排序 ``` - **去除重复项** ```cpp list.removeDuplicates(); ``` --- #### 7. 结合信号槽机制应用实例 在实际开发过程中经常配合 Qt 的核心特性——信号槽一起工作。比如下面展示了一个简单的场景,在用户界面组件间传递信息流[^4]: 假设有一个自定义控件希望暴露两个可配置参数给外部使用者设置名字以及数值的同时触发通知事件以便其他部分响应变化情况: ```cpp class MyCustomWidget : public QWidget { Q_OBJECT public: explicit MyCustomWidget(QWidget *parent = nullptr); private: QString m_name; int m_value; public slots: void setName(const QString &name); QString name() const; void setValue(int value); int value() const; signals: void nameChanged(); void valueChanged(int newValue); }; ``` 内部实现略过细节仅示意如何利用到前面提到的知识点之一即维护一份关联选项卡标题文字组成的动态数组结构体成员变量m_rec_topicList型正是QStringList. --- #### 总结 综上所述,QStringList 不仅为开发者带来了极大的便利性而且高度集成进了整个Qt生态体系当中成为不可或缺的一部分.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值