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:

QByteArrayListQItemSelectionQQueue, and QStringList

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]
takeFirst() 移除並返回第一個元素
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) 排序


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM