如何在 QCollat​​or 不可用的 Qt 4.6.2 中对 QStringList 进行数字排序

How can I do a numeric sort of a QStringList in Qt 4.6.2 where QCollator is not available

我看过使用 QCollat​​or 对 QStringList 进行数字排序的示例。不幸的是,QCollat​​or 直到 Qt 5.2 或更高版本才可用。我正在使用 Qt4.6.2。

我的 QStringList 只包含整数。

示例 QStringList 值:

20
2
1
3

预期排序结果:

1
2
3
20

任何人都可以提供一个简单的示例 C++ 源代码来为 QStringList 提供数字排序吗?

QStringList::sort 的 Qt 文档建议使用 QMap 按任意顺序排序。您可以构建一个映射并获取排序后的字符串,如下所示:

QStringList l = QStringList() << "3" << "20" << "2" << "1";
QMap<int, QString> m;
for (auto s : l) m[s.toInt()] = s;
l = QStringList(m.values());