我创建了一个qt bugticket希望文档将被扩展.
相信2010年的问题和Qt文档,operator==()不适用于自定义类型.
引用:
bool QVariant :: operator ==(const QVariant&v)const
将此QVariant与其进行比较
v,true如果它们相等则返回; 否则返回false.
QVariant使用它包含的type()的相等运算符来检查是否相等.如果它的类型与此变体的类型不同,QVariant将尝试convert()v.查看canConvert()可能的转换列表.警告:此功能不支持注册的自定义类型
qRegisterMetaType().
我试图从2010年的Stackoverflow问题重现repro案例,并且比较对我没有任何问题.
我也更进一步,尝试使用自己的类进行比较,这也很完美.要重现,请将以下代码放入任何标头中:
enum MyEnum { Foo, Bar };
Q_DECLARE_METATYPE(MyEnum)
class MyClass
{
int value;
public:
MyClass() : value(0)
{
}
MyClass(int a) : value(a)
{
}
bool operator==(const MyClass &) const
{
Q_ASSERT(false); …Run Code Online (Sandbox Code Playgroud)