gpt4 book ai didi

c++ - 打印 Qt 属性枚举值作为键字符串

转载 作者:搜寻专家 更新时间:2023-10-31 01:31:27 25 4
gpt4 key购买 nike

我有一个 QML Loader,在某些情况下我想打印它的 status 属性,但是我在控制台上得到了 0 ,即使我使用 toString()。所以我需要始终引用 qquickloader_p.h 中枚举值的顺序以了解发生了什么。

还有其他办法吗?

最佳答案

如果以下语法满足您的需要,实际上有一种方法可以在不知道甚至不传递枚举名称的情况下获取枚举 key :

Info.print(loader, "status")

你可以通过这个获取:

#include <QMetaType>
#include <QMetaProperty>
#include <QMetaEnum>
#include <QObject>
#include <QDebug>

class EnumInfo : public QObject {
Q_OBJECT
public slots:
void print(QObject * obj, QString prop) {
const QMetaObject * meta = obj->metaObject();
int i = meta->indexOfProperty(qUtf8Printable(prop));
if (i > -1) {
QMetaProperty p = meta->property(i);
if (p.isEnumType()) {
QMetaEnum en = p.enumerator();
qDebug() << en.name() << ":" << en.key(obj->property(p.name()).toInt());
}
}
}
};

该对象最好作为单例暴露给 QML,尽管对于更随意的使用,上下文属性不会产生太多开销。

关于c++ - 打印 Qt 属性枚举值作为键字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45840228/

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