setContextProperty和object的getProperty之间的区别

时间:2015-03-08 08:43:37

标签: c++ qt qml qtquick2 qt-quick

我现在真的很困惑

之间的区别是什么
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()
}

的main.cpp

QQmlApplicationEngine engine;
QQmlContext* context = engine.rootContext();

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

当我点击按钮时,它给我一个调用方法的空错误 我哪里出错?

1 个答案:

答案 0 :(得分:2)

setPropertyQObject的成员,用于为QObject的属性设置值。虽然setContextPropertyQQmlContext类的成员,但用于在qml上下文中设置name属性的值。您可以在Qt文档中阅读QQmlContext

  

每个QQmlContext包含一组与其不同的属性   QObject属性,允许将数据显式绑定到a   上下文的名称。上下文属性由以下内容定义和更新   调用QQmlContext :: setContextProperty()。