Имя класса из QMetaProperty

Я работаю над созданием собственного виджета дизайнера, который выглядит и функционирует как qt. Но теперь мне нужно было узнать, как создается собственность. Я знал, что мы можем получить свойства виджета, используя QMetaObject а также QMetaProperty но мой вопрос, смогу ли я получить имя класса каждого свойства. Как свойство имени объекта происходит от QObject и геоментрия собственность исходит от QWidget, Это так, что я должен сам написать код для моделирования или есть способ получить classInfo из свойства. Я приложил изображение, которое я пытаюсь добиться какого-либо ответа или связанного поста.

Спасибо,
введите описание изображения здесь

1

Решение

Чтобы создать сопоставление между классами и их свойствами, вам нужно пройти через иерархию классов вашего объекта. Вот пример кода, который создает такое отображение:

// Create properties per class mapping for the initialObject.
const QMetaObject *mo = initialObject->metaObject();
QMap<QString, QStringList> propertyMap;
do {
QStringList properties;
for(int i = mo->propertyOffset(); i < mo->propertyCount(); ++i) {
properties << QString::fromLatin1(mo->property(i).name());
}
propertyMap[mo->className()] = properties;

} while (mo = mo->superClass());

Теперь propertyMap содержит все свойства, отсортированные по именам классов, к которым они принадлежат.

1

Другие решения


По вопросам рекламы [email protected]