如何在Qt中对QList <qvariant>进行排序?</qvariant>

时间:2014-02-05 13:23:41

标签: qt sorting qvariant

我有以下数据结构。

QList<QVariant> fieldsList

如何对此列表进行排序?此列表包含字符串。我想按字母顺序对fieldList进行排序?

4 个答案:

答案 0 :(得分:37)

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

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

参考:site

答案 1 :(得分:16)

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

 // 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);
 }

答案 2 :(得分:-1)

对于QList排序,您可以使用qSort

如果你想使用QVariant进行排序或类似,它会有一些绊脚石。 根据您的喜好,您可以编写自己的运算符叠加层。

但它有相当大的危险!因为您可能需要比较不兼容的值

答案 3 :(得分:-1)

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;
        }
    }
}