1

QML Repeater モデルに割り当てられた C++ リスト データにアクセスしようとすると問題が発生しました。

デリゲートの助けなしにこのデータにアクセスできますか?

例: C++:

QList<MyOwnStruct>  GetListData() // Invokable from qml
{
   QList<MyOwnStruct> infoData
   .... // Appended data 
   return infoData
}

QML:

Row {
    Repeater {
        model: GetListData()
        ....
    }
}

上記の例では、リピーターが繰り返す infoData の正確な数を取得できました。しかし、個々の要素のような infoData からより多くの情報を取得することはできませんでした。

4

1 に答える 1

1

構造体の要素にアクセスする場合は、MyOwnStructをQMLが理解できるもの(QVariantMapなど)に変換する必要があります

だからあなたはこのようなことをすることができます。

QVariantMap MyClass::GetData(int index) // Invokable
{
   QVariantMap var;

   MyOwnStruct infoData = infoListData[index];

   // Appended data 
    var.insert("elem_a", infoData.element_a);
    var.insert("elem_b", infoData.element_b);

    return var;
}

次に、QMLでアクセスできるのは次のようなものです

var data_at_index = getData(index)
var a = data_at_index["elem_a"]

リピーターモデルは、リストのカウントを返す単なるQ_PROPERTY整数にすることができます。

于 2013-02-19T07:42:38.613 に答える