我有以下数据结构。
QList<QVariant> fieldsList
如何对此列表进行排序?此列表包含字符串。我想按字母顺序对fieldList
进行排序?
答案 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;
}
}
}