setContextProperty 和 setProperty 之间的区别

Diiference between setContextProperty and setProperty of object

本文关键字:区别 之间 setProperty setContextProperty      更新时间:2023-10-16

我现在真的很困惑

两者之间有什么区别

QQmlApplicationEngine engine;
engine.rootContext().setContextProperty("myObject",&userData);

object->setProperty("myObject", myObject)

这是 QML 文件

ApplicationWindow {
id: applicationWindow1
Item {
    id: propertyHolder
    property MyObject myObject
}

我已经阅读了如何使用QML绑定,但仍然没有弄清楚。请帮忙谢谢

编辑 : =========================我在这里附加了代码片段

ApplicationWindow {
id: applicationWindow1
Item {
    id: propertyHolder
    property MyClass myClass
}
Button {
    onClicked : 
        propertyHolder.myClass.doSomething()
}

主.cpp

QQmlApplicationEngine engine;
QQmlContext* context = engine.rootContext();
MyClass myClass;
context->setContextProperty("myClass",&myClass);
engine.load(QUrl("qrc:///mainControl.qml"));

当我单击按钮时,它给了我调用方法的空错误我哪里做错了?

setPropertyQObject的成员,用于为QObject的属性设置值。而 setContextProperty 是类QQmlContext的成员,用于在 qml 上下文中设置 name 属性的值。您可以在Qt文档中阅读有关QQmlContext

每个 QQmlContext 都包含一组属性,不同于其 QObject 属性,允许将数据显式绑定到 按名称分类的上下文。上下文属性由 调用 QQmlContext::setContextProperty()。