diff --git a/PropertyEditor/source/src/QPropertyHandle.cpp b/PropertyEditor/source/src/QPropertyHandle.cpp index ac8e165..89d19b1 100644 --- a/PropertyEditor/source/src/QPropertyHandle.cpp +++ b/PropertyEditor/source/src/QPropertyHandle.cpp @@ -42,23 +42,29 @@ QPropertyHandle::QPropertyHandle(QObject* inParent, QMetaType inType, QString in void QPropertyHandle::resloveMetaData() { auto metaObj = parent()->metaObject(); - auto firstField = getPropertyPath().split(".").first(); - for (int i = 0; i < metaObj->classInfoCount(); i++) { - auto metaClassInfo = metaObj->classInfo(i); - if (metaClassInfo.name() == firstField) { - QStringList fields = QString(metaClassInfo.value()).split(",", Qt::SplitBehaviorFlags::SkipEmptyParts); - for (auto field : fields) { - QStringList pair = field.split("="); - QString key, value; - if (pair.size() > 0) { - key = pair.first().trimmed(); + const QStringList pathSegments = getPropertyPath().split("."); + + // Try each segment from most specific (last) to least specific (first) + for (int seg = pathSegments.size() - 1; seg >= 0; --seg) { + const QString& fieldName = pathSegments[seg]; + if (fieldName.isEmpty()) continue; + for (int i = 0; i < metaObj->classInfoCount(); i++) { + auto metaClassInfo = metaObj->classInfo(i); + if (metaClassInfo.name() == fieldName) { + QStringList fields = QString(metaClassInfo.value()).split(",", Qt::SplitBehaviorFlags::SkipEmptyParts); + for (auto field : fields) { + QStringList pair = field.split("="); + QString key, value; + if (pair.size() > 0) { + key = pair.first().trimmed(); + } + if (pair.size() > 1) { + value = pair[1].trimmed(); + } + mMetaData[key] = value; } - if (pair.size() > 1) { - value = pair[1].trimmed(); - } - mMetaData[key] = value; + return; } - return; } } } diff --git a/include/graphicsItem/graphicsTextItem.h b/include/graphicsItem/graphicsTextItem.h index bced226..ca0ae8d 100644 --- a/include/graphicsItem/graphicsTextItem.h +++ b/include/graphicsItem/graphicsTextItem.h @@ -12,6 +12,10 @@ class GraphicsTextItem : public AbstractShapeType, public IPropertyGroupProvider { Q_OBJECT + + Q_CLASSINFO("x", "Min=-1000,Max=1000,Step=1,Group=ptPosition") + Q_CLASSINFO("y", "Min=-1000,Max=1000,Step=1,Group=ptPosition") + Q_PROPERTY(QString text READ toPlainText WRITE setPlainText) Q_PROPERTY(QPointF ptPosition READ pos WRITE setPos FINAL) Q_PROPERTY(QFont textFont READ textFont WRITE setTextFont)