Qt- Qlist检查包含Custom类

use*_*530 3 c++ qt

有没有办法覆盖加载自定义类的Qt QList的比较机制.

即在java中你只需要覆盖一个比较方法.

我正在使用我的customclass模型的QList.

QList <CustomClass *>list;
CustomClass *c1=new CustomClass();
c1.name= "john";
list.append(c2); 
CustomClass *c2=new CustomClass();
c2.name= "john";

qDebug()<<list.contains(c2);  //false

//Secondly I have overridden the equals '==' operator and still getting false
qDebug()<< (c1 == c2); //false, why ? 
qDebug()<< (c1->operator ==(*c2)); //true

class CustomClass
{
QString name;
 bool operator==(const CustomClass& other)const
{
    if(this->name==(other.name))
    {
        return true;
    }
    return false;
}
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 5

这一行:

qDebug()<< (c1 == c2); //false, why ? 
Run Code Online (Sandbox Code Playgroud)

这是false因为你没有比较实际的实例,而是指针.

试试这个:

qDebug()<< (*c1 == *c2);
Run Code Online (Sandbox Code Playgroud)