我有一个二维qvariantlist,我想在QML中显示。我一直在尝试使用Listview,但是它仅显示您指定的尺寸。前数组[0]数组1 ...
以下代码仅显示第一维...:
Rectangle {
id: rectangle
height: 300
anchors.top: userFields.bottom
width: parent.width
ListView {
id: listView
anchors.centerIn: parent
width: 180
height: 200
model: RdaDevicePropertyAcess.rdaDataAcquired[userFields.devicePropertyText + '#' + userFields.fieldText]
delegate: Row {
Rectangle {
id: first
width: listView.width / 3
height: 30
Text {
anchors.centerIn: parent
text: modelData[0]
font.pointSize: 20
}
}
}
}
}
我正在看这个POST,但是我没有为我工作。我想要相同的内容,但将其显示到qml对象中。
我也一直在尝试使用createObject()javascript函数,但它对我也不起作用。
有人有什么建议吗?
答案 0 :(得分:1)
我回复自己。最后,我用下面的QML代码解决了这个问题。我认为这将帮助许多人节省时间。
Grid {
id: rectangle
height: 1000
columns: _model.myQvariantList.length
anchors.top: userFields.bottom
anchors.left: parent.left
anchors.right: parent.right
width: 1000
Repeater {
model: _model.myQvariantList[0].length
Repeater {
model: _model.myQvariantList.length
id: repeater1
property int outerIndex: index
Rectangle {
width: 20; height: 20
Text
{
anchors.centerIn: parent
text: _model.myQvariantList[index][repeater1.outerIndex]
font.pointSize: 10
}
}
}
}
}
答案 1 :(得分:0)
我填写了二维qvariantlist:
case DataType::DT_FLOAT_ARRAY_2D:{
const float * array= entry->getArrayFloat2D(rowCount, columnCount);
QVariantList list;
for (unsigned long row=0; row < rowCount;row++) {
QVariantList rows;
for (unsigned long col=0; col < columnCount;col++) {
rows.append(array[(row*columnCount+col)]);
}
list.append(QVariant::fromValue(rows));
}
return list;
}
然后在QML部分中,我尝试显示2D qvariantlist:
delegate: Row {
spacing: 5;
Repeater {
model: qvariantListObject
Rectangle {
width: listView.width / 3
height: 30
Text {
anchors.centerIn: parent
text: modelData[index]
font.pointSize: 12
}
}
}
}
但是它只会重复同一行几次。