如何在QML中显示二维qvariantlist

时间:2018-08-07 10:08:15

标签: qt listview qml qvariant

我有一个二维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函数,但它对我也不起作用。

有人有什么建议吗?

2 个答案:

答案 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
                                        }
                                    }
                                }
                           }

但是它只会重复同一行几次。