• 8406阅读
  • 8回复

[提问]qt 中排序 [复制链接]

上一主题 下一主题
离线贝若依
 
只看楼主 倒序阅读 楼主  发表于: 2011-06-15
Rt ,我有个QList<class*> *group3_list ,class是一个类,我要求按照类里面的一个成员排序,怎么办?
离线贝若依
只看该作者 1楼 发表于: 2011-06-15
没人回复吗?

离线jdwx

只看该作者 2楼 发表于: 2011-06-15
用STL标准方法:在你的类里重载<
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线贝若依
只看该作者 3楼 发表于: 2011-06-15
回 2楼(jdwx) 的帖子
不能用qsort之类的函数吗?
离线jdwx

只看该作者 4楼 发表于: 2011-06-15
void qSort ( RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan )
This is an overloaded function.
Uses the lessThan function instead of operator<() to compare the items.
For example, here's how to sort the strings in a QStringList in case-insensitive alphabetical order:
bool caseInsensitiveLessThan(const QString &s1, const QString &s2)
{
     return s1.toLower() < s2.toLower();
}

int doSomething()
{
     QStringList list;
     list << "AlPha" << "beTA" << "gamma" << "DELTA";
     qSort(list.begin(), list.end(), caseInsensitiveLessThan);
     // list: [ "AlPha", "beTA", "DELTA", "gamma" ]
}
这是QSort的说明
任然要自己重载<
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线贝若依
只看该作者 5楼 发表于: 2011-06-15
回 4楼(jdwx) 的帖子
怎样重载呢?
离线贝若依
只看该作者 6楼 发表于: 2011-06-15
回 5楼(贝若依) 的帖子
我自己下来认真钻研一下
离线diyuanbo

只看该作者 7楼 发表于: 2011-06-16
4楼应该是对的。具体方法参考以下:
1、写一个你的class比较的函数,c1比c2小的时侯返回true,否则返回false
bool YOURCclassLessThan(const class * c1, const class * c2)
{
     return c1-〉someValue() < c2->someValue();
}
2、qSort(group3_list->begin(),group3_list->end(),YOURCclassLessThan);
此时group3_list所指的列表就按你的大小比较规则重新排序了。
离线XChinux

只看该作者 8楼 发表于: 2011-06-16
这个东西得看C++中的STL相关部分,把那些理解了,这里就迎刃而解了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个