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")));
我想尝试 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")));