添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

QList<T>

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

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

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

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

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

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

list[i] list.at(i)

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

访问并移除

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

indexOf () 、 lastIndexOf ()

5)迭代器

Java样式: QListIterator QMutableListIterator

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

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、模块和加载项

专门存储String的List。

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

1)初始化

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

2)添加元素

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

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

fonts << "Courier" << "Verdana";
//①索引,标准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;

用指定分隔符连接: 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、模块和加载项

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

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

filter (QRegExp rx )

filter (QRegularExpression r e )

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

indexOf (QRegExp rx , int from = 0)

indexOf (QRegularExpression re , int from = 0)

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

join (QString separator )

join (QChar separator )

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

lastIndexOf (QRegExp rx , int from = -1)

lastIndexOf (QRegularExpression re , int from = -1)

逆向查找,返回第一个符合正则的子串的位置 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进行替换 sort (Qt::CaseSensitivity cs = Qt::CaseSensitive)