我在尝试访问分配给QML Repeater模型的C ++列表数据时遇到了问题。
这些数据可以在没有代表帮助的情况下访问吗?
例如: C ++:
QList<MyOwnStruct> GetListData() // Invokable from qml
{
QList<MyOwnStruct> infoData
.... // Appended data
return infoData
}
QML:
Row {
Repeater {
model: GetListData()
....
}
}
在上面的例子中,我能够获得转发器重复的infoData的确切数量。但我无法从infoData获得更多信息,如每个元素。
答案 0 :(得分: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"]
您的Repeater模型可以只是一个Q_PROPERTY整数,它返回列表的计数。