2014-12-04 93 views
1

在C++文件中,我有一個類型爲QList<QStringList>*的對象,它應該是一個二維字符串數組。
將複雜的C++ Qt對象暴露給QML

目前,在C++中,我能夠做到這一點:

// this will display the QString value in the Console, 
// where entries is of type QList<QStringList>* 
qDebug() << "test: " << entries->at(0).at(0); 

我知道如何公開此對象QML,不過爲什麼我將能夠瀏覽/訪問其功能QML?

main.qml,我可以調用返回此對象的功能:

_app.getCalendar() 

但我怎麼可以瀏覽它,就像在C++代碼,上面?

編輯:我真的需要做的是發送一個二維字符串數組從C++到QML。我是以一種過於複雜的方式來做這件事嗎?是否有另一種方法來完成這個?

+1

你到底做的,到底是什麼?這裏有問題嗎? – MrEricSir 2014-12-04 18:22:56

+0

我的問題是:如何在QML中導航這個二維數組? – DrKaoliN 2014-12-04 18:25:36

+0

可以[這些](http://stackoverflow.com/questions/14287252/accessing-c-qlists-from-qml)答案幫助你? – BaCaRoZzo 2014-12-04 18:56:31

回答

6

在您接觸QML的類中定義一個INVOKABLE getter函數。

頭:

class MyQmlClass : QObject 
{ 
    Q_OBJECT 

public: 
    // ... 

    Q_INVOKABLE QString getString(int y, int y); 


    // ... 
} 

,並在.cpp文件中的廣告實現它如下:

QString MyQmlClass::getString(int x, int y) 
{ 
    return entries->at(x).at(y); 
} 

最後在QML:

_app.getCalendar().getString(3, 4) 
+0

非常感謝您的回答! :) – DrKaoliN 2014-12-04 20:54:09