gpt4 book ai didi

c++ - 来自 QMetaProperty 的类名

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:28 31 4
gpt4 key购买 nike

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

谢谢, enter image description here

最佳答案

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

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

关于c++ - 来自 QMetaProperty 的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23359215/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com