diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp
index ab52f4e3c8bd7b2f4fa8d7b794f8c640c5a2f666..13025709909e1cfaea181a56df9f89700914b9c4 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp
@@ -124,7 +124,9 @@ void PropertyEditor::NodeType::setup(const QmlObjectNode &fxObjectNode, const QS
             createPropertyEditorValue(fxObjectNode, propertyName, fxObjectNode.instanceValue(propertyName), &m_backendValuesPropertyMap, propertyEditor);
 
         // className
-        PropertyEditorValue *valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
+        PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(QmlMetaType::toQObject(m_backendValuesPropertyMap.value("className")));
+        if (!valueObject)
+            valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
         valueObject->setName("className");
         valueObject->setModelNode(fxObjectNode.modelNode());
         valueObject->setValue(fxObjectNode.modelNode().simplifiedTypeName());
@@ -132,7 +134,9 @@ void PropertyEditor::NodeType::setup(const QmlObjectNode &fxObjectNode, const QS
         m_backendValuesPropertyMap.insert("className", QVariant::fromValue(valueObject));
 
         // id
-        valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
+        valueObject = qobject_cast<PropertyEditorValue*>(QmlMetaType::toQObject(m_backendValuesPropertyMap.value("id")));
+        if (!valueObject)
+            valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
         valueObject->setName("id");
         valueObject->setValue(fxObjectNode.id());
         QObject::connect(valueObject, SIGNAL(valueChanged(QString)), &m_backendValuesPropertyMap, SIGNAL(valueChanged(QString)));