1

我正在制作自己的设计器小部件,其外观和功能都类似于 qt。但现在我需要知道该属性是如何创建的。我知道我们可以使用获取小部件的属性,QMetaObjectQMetaProperty我的问题是我能否获取每个属性的类名。就像对象名称属性来自QObject和几何属性来自QWidget。是这样我应该硬编码自己建模还是有办法从属性中获取classInfo。我已附上我试图实现任何响应或相关帖子的图像。

谢谢, 在此处输入图像描述

4

1 回答 1

2

为了在类及其属性之间创建映射,您需要遍历对象的类层次结构。以下是创建此类映射的示例代码:

// 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包含按它们所属的类名排序的所有属性。

于 2014-04-29T08:44:35.847 回答