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 回答