//метод конвертирует 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; }