我有以下问题,我正在使用
Q_DECLARE_METATYPE( std::shared_ptr<int> );
qRegisterMetaType< std::shared_ptr<int> >();
QMetaType::registerComparators< std::shared_ptr<int> >();
使用例如std::shared_ptr<int>
QListModel。
我需要一个行为
QVariant::fromValue( std::shared_ptr<int>( new int(5) ) ) == QVariant::fromValue( std::shared_ptr<int>( new int(5) ) )
是真的。上面的代码在这里返回false,因为std::shared_ptr<int>::operator== ()
比较了原始指针。是否可以在QMetaType::registerComparators
?
答案 0 :(得分:5)
您可以尝试使用registerConverter()
允许将shared_ptr<int>
隐式转换为常规int,并以这种方式进行比较。显然,你不会registerComparator()
。另一种方法是将shared_ptr<int>
包装在您自己的类中,并按照您希望的方式进行比较。