Qt Quick - 如何使用 setContextProperties()

Qt Quick - How to use setContextProperties()

我想尝试 rootContext()->setContextProperties() 而不是 rootContext()->setContextProperty(),因为我读到捆绑属性比自己设置 X 次更有效。不幸的是,我找不到任何关于如何使用它的好资源。

例如在 main.cpp 我有

ClassA a;
ClassB b;

通常我会选择

engine.rootContext()->setContextProperty(&a, "classA");
engine.rootContext()->setContextProperty(&b, "classB");

那么您如何在句法上正确地总结并形成 QVector<QQmlContext::PropertyPair>?这个文档真的很简单。

一个小例子将不胜感激。谢谢!

此结构包含一个 属性 名称和一个 属性 值。您可以将多个属性添加为一个集合。

QSharedPointer<QQmlApplicationEngine> m_engine;
QQmlContext* m_ctxt;
m_engine->clearComponentCache();
m_engine.reset(new QQmlApplicationEngine, &QObject::deleteLater);
m_ctxt = m_engine->rootContext();
m_ctxt->setParent(m_engine.get());
QVector<QQmlContext::PropertyPair> qmlProperties;  

qmlProperties.push_back(QQmlContext::PropertyPair{"classA", QVariant::fromValue(objectA)});         

qmlProperties.push_back(QQmlContext::PropertyPair{"classB", QVariant::fromValue(objectB)});
    //add other context properties
m_ctxt->setContextProperties(qmlProperties);
m_engine->load(QUrl(QLatin1String("qrc:/qml/main.qml")));