我的工作让我自己的设计师小部件的外观和功能,如QT。 但现在我需要知道如何创建属性。 我知道我们可以得到使用控件的属性QMetaObject
和QMetaProperty
但我的问题是,我将能够得到每个属性的类名。 就像对象名称属性来自QObject
和geomentry财产来自QWidget
。 是不是这样,我应该硬编码自己的模型或者是有没有办法从物业得到的ClassInfo。 我已经附加其即时试图实现任何响应的图像或相关交理解。
谢谢,
我的工作让我自己的设计师小部件的外观和功能,如QT。 但现在我需要知道如何创建属性。 我知道我们可以得到使用控件的属性QMetaObject
和QMetaProperty
但我的问题是,我将能够得到每个属性的类名。 就像对象名称属性来自QObject
和geomentry财产来自QWidget
。 是不是这样,我应该硬编码自己的模型或者是有没有办法从物业得到的ClassInfo。 我已经附加其即时试图实现任何响应的图像或相关交理解。
谢谢,
为了创建类和它们的属性之间的映射,你需要通过你的对象的类层次遍历。 下面是板条箱这样的映射的示例代码:
// 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
包含由他们所属的类名排序的所有属性。