Russian Qt Forum

Qt => Вопросы новичков => Тема начата: andrew.k от Май 26, 2015, 12:30



Название: QVariantList + Custom Type
Отправлено: andrew.k от Май 26, 2015, 12:30
Имеется собственный тип, который сохраняется в QVariant.
При для списка QVariantList с элементами из этого типа не работает операция сравнения.
То есть для двух одинаковых списков  оператор == возвращает false

Что не так?

Код
C++ (Qt)
#include <QVariant>
#include <QPair>
#include <QString>
#include <QVariantList>
#include <QtDebug>
 
typedef QPair<QString, QVariant> StringVariantPair;
Q_DECLARE_METATYPE(StringVariantPair)
 
QVariantList testList()
{
   QVariantList list;
   QVariant v;
   StringVariantPair p;
   p.first = "option1";
   p.second = 12345;
   v.setValue(p);
   list.append(v);
 
   return list;
}
 
int main()
{
   QVariantList l1, l2;
   l1 = testList();
   l2 = testList();
 
   if(l1 == l2)
       qDebug() << "Equal";
   else
       qDebug() << "Not equal";
   return 0;
}
 


Название: Re: QVariantList + Custom Type
Отправлено: andrew.k от Май 26, 2015, 12:35
Решение простое (http://doc.qt.io/qt-5/qmetatype.html#registerComparators)


Название: Re: QVariantList + Custom Type
Отправлено: kambala от Май 26, 2015, 14:03
вот почему нельзя сначала почитать документацию и погуглить, а только потом лезть на форум?


Название: Re: QVariantList + Custom Type
Отправлено: andrew.k от Май 27, 2015, 20:22
вот почему нельзя сначала почитать документацию и погуглить, а только потом лезть на форум?
Потому что параллельные вычисления быстрее работают :)