diff options
-rw-r--r-- | src/activeqt/container/qaxbase.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp index 6732d6c..f4ae696 100644 --- a/src/activeqt/container/qaxbase.cpp +++ b/src/activeqt/container/qaxbase.cpp @@ -3517,8 +3517,6 @@ int QAxBase::internalProperty(QMetaObject::Call call, int index, void **v) case QMetaObject::WriteProperty: { - QVariant::Type t = (QVariant::Type)prop.type(); - DISPID dispidNamed = DISPID_PROPERTYPUT; params.cArgs = 1; params.cNamedArgs = 1; @@ -3534,15 +3532,14 @@ int QAxBase::internalProperty(QMetaObject::Call call, int index, void **v) qvar = *(int*)v[0]; proptype = 0; } else { - if (t == QVariant::Type(QMetaType::QVariant) || t == QVariant::LastType) { + int typeId = prop.userType(); + if (typeId == int(QMetaType::QVariant)) { qvar = *(QVariant*)v[0]; proptype = 0; - } else if (t == QVariant::UserType) { - qvar = QVariant(qRegisterMetaType<void*>(prop.typeName()), (void**)v[0]); -// qvar.setValue(*(void**)v[0], prop.typeName()); } else { - proptype = d->metaObject()->propertyType(propname); - qvar = QVariant(t, v[0]); + qvar = QVariant(typeId, v[0]); + if (typeId < QMetaType::User) + proptype = d->metaObject()->propertyType(propname); } } |