创建了一个 QML QtObject:
QtObject {
property int p: 42
property int q: 44
}
将其存储在局部变量
QObject *obj
后,如何打印所有自定义属性名称和可能的值(即上面示例中只有 p
和 q
)?我希望这适用于任何类(不仅仅是 QtObject
),而不是打印已经用 Q_PROPERTY
声明的属性。澄清:“自定义”不是指通过
QObject::setProperty
添加的未使用 Q_PROPERTY
声明的属性。我的意思是通过 property <type> <name>: <value>
符号在 QML 中声明的属性,这些属性不是在该 QML 对象的 Q_PROPERTY
子类中使用 QObject
声明的。快速测试表明这些属性不会出现在 QObject::dynamicPropertyNames
中。
最佳答案
所有关于属性、可调用方法(槽)和信号的信息都由 QMetaObject 存储在每个 QObject 中。如果要列出对象中的所有属性:
QObject *obj = findObjectMethod();
QMetaObject *meta = obj->metaObject();
int n = meta->propertyCount();
for(int i = 0; i < n; ++i)
{
qDebug() << "Property: " << meta->property(i)->name();
}
关于qt - 如何打印 QML 对象的自定义属性列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26541846/