2016-10-24 8 views
0

グリッドビューを使用していくつかの曲をリストしているメディアプレーヤーシステムを作成しています。私たちのアプリケーションでは、リストから1曲をドラッグして指定した場所にドロップすることができます。これらのすべての機能が実装されています。しかし問題は、ドラッグしている間、アイテムがグリッドビュー内の他のアイテムの後ろにドラッグされていることです。 (すなわち、3曲をリストアップしている場合、最初の曲は他の2曲の後ろにあり、2曲目は3曲目の後ろで、最初の曲目の前にあります)。リスト項目をQMLのgridviewから前面に表示する方法は?

ドラッグアンドドロップするときにグリッドアイテムを前面に持ってきようとしています。 これには解決策はありますか?

+0

あなたの古い質問の1つを調べることができます。私はすでにそれに答えました。 "指定された領域"のコードスニペットをgridviewで切り替えると、gridviewのコードが "指定された領域"のコードの後に​​来るようになり、その上にlayerdされます。または、gridviewのzプロパティを "指定された領域"(http://doc.qt.io/qt-5/qml-qtquick-item.html#z-小道具) – derM

+0

ご協力いただきありがとうございます。しかし、グリッドビューのコードはすでにすべてのレイヤーの上にあります。それは問題ではありません。問題は、グリッドビューのグリッド項目のレイヤーの間です。選択したグリッド項目を同じグリッドビュー内の他のすべてのグリッド項目の上に移動する必要があります。 –

+0

次に、ドラッグがアクティブである限り、GridItemのz値を正の値に設定することができます。 – derM

答えて

1

元のオブジェクトをドラッグする代わりに、専用のドラッグアイコンアイテムを作成し、グリッドのすべての要素の上にグリッドビューの上にある目に見えないアイテムを親にすることができます。ドラッグ開始時にアイテムを作成し、ドラッグ終了時にアイテムを破棄します。

+0

の解決策に頼る必要があるようですが、元のアイテムの押されたイベントをドラッグアイコンに伝えることができます。 –

+0

あなたは何も伝播する必要はありません。ドラッグ項目は、ドラッグを開始した項目とまったく無関係です。 – dtech

0

@derMで述べたように、GridItemのzインデックスで作業することができます。

注:あなたの質問に関係する部分は、onPressedイベントのコードがGridItem内にあるMouseAreaというコードです。

Rectangle{ 
    width: 1280 
    height: 800 

    GridView{ 
     Rectangle{ anchors.fill: parent; color: 'blue'; opacity: 0.2; } 
     id: musicBox 
     width: 500; height: 500 
     model: 10 
     anchors.centerIn: parent 

     delegate: Rectangle{ 
      id: songItem 
      border{ width: 2; color: 'blue'} 
      width: 100; height: 100 
      color: (musicBox.currentIndex == index) ? 'yellow' : 'red' 

      Text{ 
       anchors.centerIn: parent 
       text: index 
       font.pixelSize: 20 
      } 

      MouseArea{ 
       anchors.fill: songItem 
       drag{ 
        minimumX: 0 
        minimumY: 0 
        maximumX: musicBox.width 
        maximumY: musicBox.height 
        axis: Drag.XandYAxis 
        target: songItem 
       } 
       onPressed:{ 
        for(var i = 0; i < musicBox.count; i++){ musicBox.currentIndex = i; musicBox.currentItem.z = i; } 
        musicBox.currentIndex = index 
        musicBox.currentItem.z = musicBox.count 
       } 
      } 
     } 
    } 
} 
関連する問題