2017-05-18 7 views
2

QTとQMLの両方が新しいです。私はサブクラスをインスタンス化するクラスを持っています。これらのサブクラス内のメソッドをいくつかのqmlバインディングでUIに公開したいと思います。この場合qmlコンテキストからクラスのインスタンスにアクセスする

例えば

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(); 
} 

IはQML UI内からmainclass.subclass.someMethodを()にアクセスしたいです。

これを行うには良い方法がありますか?私がアクセスしたい各機能/プロパティに対して、MainClassでラッパーメソッドを提供する必要があります。

答えて

4

​​をMainClassとすることで可能です。たとえば、

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

public: 
    MainClass(); 

private: 
    SubClass *subclass; 
}; 

これらはQMLで "grouped properties"と呼ばれます。

関連する問題