【问题标题】:How to access a C++ class object in QML rather than creating a separate object in QML?如何在 QML 中访问 C++ 类对象,而不是在 QML 中创建单独的对象?
【发布时间】:2014-01-08 10:57:29
【问题描述】:

假设有一个 C++ 类,其中包含信号和一些可从 QML 访问的函数。 现在,为了在 QML 中访问该类的成员,我编写了如下内容:

myClass
{
   id: abc

   x: 100    
   onXChanged: {console.log ("xx");}
}

假设 x 是实际 C++ 类的成员,上述代码确实有效。


现在,我有一个 C++ 类的对象,即在相关 C++ 文件中创建的 myClass

问题:
在 QML 中访问和使用已经创建的 C++ 对象,而不是在 QML 中创建同一类的新对象是否可行且合理?

【问题讨论】:

    标签: c++ qt qml qtquick2 qobject


    【解决方案1】:

    您可以为此使用上下文属性。你会这样写:

    ...
    
    MyClass myClassObject;
    QQuickView view;
    view.rootContext()->setContextProperty("myClassContextProperty", &myClassObject);
    view->setSource(QUrl::fromLocalFile("main.qml"));
    view->show();
    
    ...
    

    然后你可以在 qml 中访问它,如下所示:

    Button {
        onClicked: myClassContextProperty.x = 100
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-22
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-18
      相关资源
      最近更新 更多