1

我在 qt-quick 2.0 中遇到了一个有趣的 z 顺序问题。我有一个由 64 个项目(棋盘)组成的 8x8 网格,每个方块都是一个拖动目标。这些片段是动态创建的。我想出了如何在方块之间拖放碎片;但是,如果在第 9 格(第 1 行,第 1 列)上创建了一块,则在拖动它时,它将出现在/后面/第 10-63 格。改变“z”的值没有区别。我已将所有部分的“z”设置为 1000,并将“z: 0”放在所有其他可以具有 z 值的小部件中,没有区别。

// 找到了一个无原则的解决方法 //

qt-quick 2.0 中似乎没有绝对的 z 排序。(我觉得很难相信,但找不到这样的。)这是一个 hackish 解决方法。

拖动棋子的 z 顺序(似乎?)相对于棋子所在的正方形。因此,当棋子的正方形具有最高的 z 顺序时,棋子正确拖动(即,在棋盘上方的 z 轴)。所以我在广场上创建了一个 MouseArea,其中包含在拖动操作开始之前调整 z 顺序的 Entered 和 Exited 事件:

DropArea
{
    id: square

    // ...

    Rectangle {
        id: rect
        anchors { fill: parent }
        color: isLightSquare() ? light_square_color : dark_square_color

        MouseArea {
            anchors.fill: parent
            hoverEnabled: true
            onEntered: square.z = 2
            onExited: square.z = 1
        }
    }
}
4

0 回答 0