23

我有以下数据结构。

QList<QVariant> fieldsList

我怎样才能对这个列表进行排序?此列表包含字符串。我想fieldList按字母顺序排序?

4

3 回答 3

62

在 Qt5 中,它似乎qSort已被弃用。建议使用:

#include <algorithm>
QList<QVariant> fieldsList;
std::sort(fieldsList.begin(), fieldsList.end());

参考:网站

于 2014-12-01T12:40:23.783 回答
25

我会按以下方式进行排序:

 // Compare two variants.
 bool variantLessThan(const QVariant &v1, const QVariant &v2)
 {
     return v1.toString() < v2.toString();
 }

 int doComparison()
 {
     [..]
     QList<QVariant> fieldsList;

     // Add items to fieldsList.

     qSort(fieldsList.begin(), fieldsList.end(), variantLessThan);
 }

更新:在 QT5 中qSort已过时。但它仍然可以支持旧的源代码。强烈建议std::sort在新代码中使用而不是使用它。

于 2014-02-05T13:32:05.807 回答
-2
int n;
int i;
for (n=0; n < fieldsList.count(); n++)
{
    for (i=n+1; i < fieldsList.count(); i++)
    {
        QString valorN=fieldsList.at(n).field();
        QString valorI=fieldsList.at(i).field();
        if (valorN.toUpper() > valorI.toUpper())
        {
            fieldsList.move(i, n);
            n=0;
        }
    }
}    
于 2015-03-19T01:26:14.540 回答