Qtonimo
2nd August 2012, 11:58
Hi, i want to use qSort to Sort a QList but I have some problems:
test.h
class Test
{
public:
int number;
QString name;
public:
Test(int number,QString name);
QString toString();
bool operator< (const Test& t) const;
};
test.cpp
Test::Test(int number, QString name):
number(number),
name(name)
{
}
QString Test::toString()
{
return "Test( " + QString::number(number) + " , " + name + ")";
}
bool Test::operator <(const Test& t) const
{
return this->number < t.number;
}
main.cpp
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<Test*> list;
list.append(new Test(10,"test1"));
list.append(new Test(6,"test2"));
list.append(new Test(8,"test3"));
list.append(new Test(100,"test4"));
list.append(new Test(1,"test5"));
list.append(new Test(5,"test6"));
for(int i = 0; i < list.size(); i++){
qDebug() << list.at(i)->toString();
}
qSort(list.begin(),list.end());
qDebug() << "sorted:";
for(int i = 0; i < list.size(); i++){
qDebug() << list.at(i)->toString();
}
return a.exec();
}
Output:
"Test( 6 , test2)"
"Test( 8 , test3)"
"Test( 100 , test4)"
"Test( 1 , test5)"
"Test( 5 , test6)"
sorted:
"Test( 100 , test4)"
"Test( 10 , test1)"
"Test( 6 , test2)"
"Test( 8 , test3)"
"Test( 1 , test5)"
"Test( 5 , test6)"
test.h
class Test
{
public:
int number;
QString name;
public:
Test(int number,QString name);
QString toString();
bool operator< (const Test& t) const;
};
test.cpp
Test::Test(int number, QString name):
number(number),
name(name)
{
}
QString Test::toString()
{
return "Test( " + QString::number(number) + " , " + name + ")";
}
bool Test::operator <(const Test& t) const
{
return this->number < t.number;
}
main.cpp
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<Test*> list;
list.append(new Test(10,"test1"));
list.append(new Test(6,"test2"));
list.append(new Test(8,"test3"));
list.append(new Test(100,"test4"));
list.append(new Test(1,"test5"));
list.append(new Test(5,"test6"));
for(int i = 0; i < list.size(); i++){
qDebug() << list.at(i)->toString();
}
qSort(list.begin(),list.end());
qDebug() << "sorted:";
for(int i = 0; i < list.size(); i++){
qDebug() << list.at(i)->toString();
}
return a.exec();
}
Output:
"Test( 6 , test2)"
"Test( 8 , test3)"
"Test( 100 , test4)"
"Test( 1 , test5)"
"Test( 5 , test6)"
sorted:
"Test( 100 , test4)"
"Test( 10 , test1)"
"Test( 6 , test2)"
"Test( 8 , test3)"
"Test( 1 , test5)"
"Test( 5 , test6)"