我是QT和QML的新手。我有一个实例化子类的类。我想通过一些qml绑定(bind)将这些子类中的方法公开给我的UI。

例如

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

}

class Subclass:QObject
{
  Q_Object
  Subclass();

  public slots:
  void someMethod();
}

主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中为我要访问的每个函数/属性提供包装方法。

最佳答案

通过将SubClass设置为MainClass的属性是可能的。例如:

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

public:
    MainClass();

private:
    SubClass *subclass;
};

这些在QML中称为“grouped properties”。

关于c++ - 从QML上下文访问类的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44056476/

10-09 06:33