Exemple #1
0
//метод конвертирует QVariant в DataManager,
// а также определяет и устанавливает тип узла объекта
DataManager DataManager::fromVariant(QVariant qvar)
{
    DataManager temp;
    if(qvar.type() == QVariant::Map)
    {
        QVariantMap qmap = qvar.toMap();
        temp.setType(T_MAP);
        temp.setParent(&object);
        //qDebug() << "map this: " << ;
        QVariantMap::ConstIterator i = qmap.constBegin();
        while(i != qmap.constEnd())
        {
            temp.append(fromVariant(i.value()), i.key());
            i++;
        }
    }
    else if(qvar.type() == QVariant::List)
    {
        QVariantList qlist = qvar.toList();
        temp.setType(T_LIST);
        temp.setParent(&array);
        //qDebug() << "list this: " << &array;
        for(int i=0; i<qlist.size(); i++)
        {
            temp.append(fromVariant(qlist.at(i)), "");
        }
    }
    else if(qvar.type() == QVariant::String)
    {
        //qDebug() << "string this: " << &stringValue;
        temp.setType(T_STRING);
        temp.setValue(qvar.toString());
        //temp.setParent(this);
    }
    else if(qvar.type() == QVariant::Int)
    {
        //qDebug() << "int this: " << &intValue;
        temp.setType(T_INT);
        temp.setValue(qvar.toInt());
        //temp.setParent(this);
    }
    else if(qvar.type() == QVariant::Double)
    {
        //qDebug() << "double this: " << &doubleValue;
        temp.setType(T_DOUBLE);
        temp.setValue(qvar.toDouble());
        //temp.setParent(this);
    }
    else if(qvar.type() == QVariant::Bool)
    {
        qDebug() << "bool this: " << &boolValue;
        temp.setType(T_BOOL);
        temp.setValue(qvar.toBool());
        //temp.setParent(this);
    }
    return temp;
}