1

qt-quick 2.0 で興味深い z オーダーの問題に遭遇しました。64 個のアイテム (チェス盤) の 8x8 グリッドがあり、各正方形がドラッグ ターゲットです。ピースは動的に作成されます。正方形の間にピースをドラッグ アンド ドロップする方法を考え出しました。ただし、ピースが正方形 9 (行 1、列 1) に作成されている場合、それをドラッグすると、正方形 10-63 の/後ろ/に表示されます。「z」の値を変更しても違いはありません。すべてのピースで「z」を 1000 に設定し、z 値を持つことができる他のすべてのウィジェットに「z: 0」を設定しましたが、違いはありません。

// 無原則な回避策を発見 //

qt-quick 2.0 には絶対的な z オーダーがないようです。(信じがたいですが、そのようなものを見つけることはできません。) これはハック的な回避策です。

ドラッグされたピースの z オーダーは、ピースが入っている正方形に相対的です (らしい?)。そのため、ピースの正方形が最高の z オーダーを持つ場合、ピースは正しくドラッグされます (つまり、ボードの上に z があります)。そこで、ドラッグ操作が開始される前に z オーダーを調整する Entered イベントと Exited イベントを使用して、四角形に MouseArea を作成しました。

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