从qml上下文访问类的实例

时间:2017-05-18 19:38:14

标签: c++ qt qml qtquick2

我是QT和QML的新手。我有一个类,它实例化子类。我想通过一些qml绑定将这些子类中的方法暴露给我的UI。

例如

class MainClass: QObject
{
   Q_OBJECT
   Subclass subclass;
   MainClass();

}

class Subclass:QObject
{
  Q_Object
  Subclass();

  public slots:
  void someMethod();
}

MAIN.C

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QQuickView *view = new QQuickView; 
    MainClass mainclass;      
    view->rootContext()->setContextProperty("MainClass", &mainClass);
    view->setSource(QUrl("qrc:/main.qml"));
    view->show();
}

在这种情况下,我想从QML UI中访问mainclass.subclass.someMethod()。

这样做有好办法吗?我应该在MainClass中为我想要访问的每个函数/属性提供包装器方法。

1 个答案:

答案 0 :(得分:4)

可以将SubClass设为MainClass的属性。例如:

class MainClass : public QObject
{
    Q_OBJECT
    Q_PROPERTY(SubClass *subClass MEMBER subClass CONSTANT)

public:
    MainClass();

private:
    SubClass *subclass;
};

这些被称为" grouped properties"在QML。