我需要解析一个QML树并获取其中所有带有
我的问题是 - 是否有一种方法可以以某种hacky(但可重现的)方式检索对象的
简化示例:
main.qml:
id
的QML对象的id
。我注意到id
不像普通属性一样(请参见下面的示例)- 从obj->property
调用返回的值是无效的QVariant
。我的问题是 - 是否有一种方法可以以某种hacky(但可重现的)方式检索对象的
id
?简化示例:
main.qml:
import QtQuick 2.9
import QtQuick.Window 2.2
Window {
visible: true
Item {
id: howToGetThis
objectName: "item"
}
}
main.cpp:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QTimer>
#include <QDebug>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
QTimer::singleShot(1000, [&]() {
auto item = engine.rootObjects()[0]->findChild<QObject*>("item");
qDebug() << item->property("objectName");
qDebug() << item->property("id");
});
return app.exec();
}
输出:
QVariant(QString, "item")
QVariant(Invalid)
objectName
,我就会使用它。被接受的答案提供的解决方案正是我想要的。 - Luke