QT qSort 的使用

QT qSort的使用

  • 基本用法
  • 自定义排序

基本用法

QList < int > list;
list << 55 << 1 << 88 << 12 << 69 << 1020 << 2;
qSort(list.begin(), list.end());  // 此处默认时调用 return a < b;
// list: [1, 2, 12, 55, 69, 88, 1020 ]

自定义排序

struct Accounts
{
    Accounts() {}
    int index;
    int times;
    QString serial;
    QStringList accountList;
};
//重写排序规则
bool ThreadMaster::accountSortRuler(const Accounts &t1, const Accounts &t2)
{
    return t1.times < t2.times;
}
//使用
void ThreadMaster::accountSort(QList<Accounts> *list)
{
    qSort(list->begin(), list->end(), accountSortRuler);
}
常见错误:
F:\Qt\Qt5.9.6\5.9.6\mingw53_32\include\QtCore\qalgorithms.h:351: error: must use '.*' or '->*' to call pointer-to-member function in 'lessThan (...)', e.g. '(... ->* lessThan) (...)'
     if (lessThan(*end, *start))
                ^
原因是accountSortRuler这个函数不是静态的(或非成员函数),非静态的函数调用需要有对象(或this指针),所以使用非静态的排序规则会报错
解决方式是:使这函数是静态函数或非成员函数

更新:

你可能感兴趣的:(QT)