我正在尝试比较QList中的项目。 以下是使用QPtrCollection执行此操作的旧方法,但这不能在qt3之后的版本中使用(据我所知)。
class gnyComponentList:public QList<gnyComponent>
{
protected:
virtual int compareItems ( QPtrCollection::Item item1, QPtrCollection::Item item2 )
{ return (((gnyComponent *)item1)->getID()).compare(((gnyComponent *)item2)->getID());}
};
我无法弄清楚在Qt5.3中这样做的好方法是什么?
答案 0 :(得分:2)
您可以在QList
个对象上使用std::equal
算法,如:
#include <QList>
#include <QString>
#include <algorithm> // for std::equal
struct Person
{
QString firstName;
QString lastName;
};
int main()
{
QList<Person> personsA, personsB;
// Populate personsA and personsB
bool equal = std::equal( personsA.begin(), personsA.end(),
personsB.begin(),
[]( const Person &a, const Person & b ) {
return a.firstName == b.firstName;
} );
}
答案 1 :(得分:-1)
这是一个简单的示例,它比较每个项目而不进行排序。 这是代码。
bool TeachTab::isTwoStringListEqual(const QStringList &dst,
const QStringList &src) {
if (dst.size() != src.size())
return false;
for (int i = 0; i < dst.size(); ++i) {
if (dst.value(i) != src.value(i)) {
return false;
}
}
return true;
}