如何在GridLayout中移动单元格 - QML?

时间:2015-06-24 07:05:53

标签: qt qml grid-layout qtquick2 qt5.4

考虑documentation of GridLayout,这是我尝试过的:

import QtQuick 2.4
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1

Window
{
    visible: true

    MainForm
    {
        GridLayout {
            id: gridLayout
            columns: 3

            height: 100
            width: 100
            property int oneRow: 0
            property int oneCol: 0

            Rectangle { id: one; Layout.row :gridLayout.oneRow; Layout.column: gridLayout.oneCol;
                height: 50; width: 50; color: "brown"}

            Rectangle { height: 50; width: 50; color: "red" }
            Rectangle { height: 50; width: 50; color: "blue"}
            Rectangle { height: 50; width: 50; color: "green"}
            Rectangle { height: 50; width: 50; color: "yellow"}
        }

        Component.onCompleted:
        {
            gridLayout.oneRow = 2
            gridLayout.oneCol = 2
        }
    }
}

如果我从Component.onCompleted

注释掉这段代码
gridLayout.oneRow = 2
gridLayout.oneCol = 2

我明白了:

enter image description here

我希望棕色方块“移动到”第二行的最后一列。
所以,我写道:

gridLayout.oneRow = 1
gridLayout.oneCol = 2
Component.onCompleted中的

然后,我得到了以下内容:

enter image description here

这不是我想要的。

请帮忙。

1 个答案:

答案 0 :(得分:1)

如果您想更改GridLayout中某些项目的单元格编号,则需要将初始row number and column number分配给所有元素 _yourself _ < / strong>,然后动态更改所需项目的位置,如下所示:

import QtQuick 2.4
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1

Window
{
    visible: true

    MainForm
    {
        GridLayout {
            id: gridLayout

            height: 100
            width: 100

            property int oneRow: 0
            property int oneCol: 0
            Rectangle { id: one;
                Layout.row :gridLayout.oneRow; Layout.column: gridLayout.oneCol;
                height: 50; width: 50; color: "brown"}

            property int twoRow: 0
            property int twoCol: 1
            Rectangle { id: two;
                Layout.row :gridLayout.twoRow; Layout.column: gridLayout.twoCol;
                height: 50; width: 50; color: "red" }

            property int threeRow: 0
            property int threeCol: 2
            Rectangle { id: three;
                Layout.row :gridLayout.threeRow; Layout.column: gridLayout.threeCol;
                height: 50; width: 50; color: "blue"}

            property int fourRow: 1
            property int fourCol: 0
            Rectangle { id: four;
                Layout.row :gridLayout.fourRow; Layout.column: gridLayout.fourCol;
                height: 50; width: 50; color: "green"}

            property int fiveRow: 1
            property int fiveCol: 1
            Rectangle { id: five;
                Layout.row :gridLayout.fiveRow; Layout.column: gridLayout.fiveCol;
                height: 50; width: 50; color: "yellow"}
        }

        Component.onCompleted:
        {
            gridLayout.oneRow = 1
            gridLayout.oneCol = 2
        }
    }
}

现在,您可以看到Component.onCompleted中的以下代码将棕色矩形移动到第2行的第3列。

Component.onCompleted:
  {
      gridLayout.oneRow = 1
      gridLayout.oneCol = 2
  }

enter image description here