2017-12-02 14 views
0

これはqt docの基本的な例です。 tile矩形では、私はanchors.fill: parentを追加し、3行すべてをanchors.fill: parentでカバーできるように感じているので、その下に3行すべてコメントしました。しかし、一度それをすると、私はもはや要素をドラッグできません。ドラッグ&ドロップが効かない理由

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.Layouts 1.3 

ApplicationWindow { 
    visible: true 


    Item { 
     id: root 

     width: 64; height: 64 

     MouseArea { 
      id: mouseArea 

      anchors.fill: parent 
      anchors.centerIn: parent 

      drag.target: tile 

      onReleased: parent = tile.Drag.target !== null ? tile.Drag.target : root 

      Rectangle { 
       id: tile 

       anchors.fill: parent 
//    width: 64; height: 64 
//    anchors.verticalCenter: parent.verticalCenter 
//    anchors.horizontalCenter: parent.horizontalCenter 


       color: "red" 

       Drag.active: mouseArea.drag.active 
       Drag.hotSpot.x: 32 
       Drag.hotSpot.y: 32 
       states: State { 
        when: mouseArea.drag.active 
        ParentChange { target: tile; parent: root } 
        AnchorChanges { target: tile; anchors.verticalCenter: undefined; anchors.horizontalCenter: undefined } 
       } 

      } 
     } 
    } 
} 

なぜ親の矩形を塗りつぶすと、ドラッグアンドドロップ機能が無効になるのですか?

答えて

0

ボートは何かに固定されるようにアンカーします。移動したい場合は、アンカーを壊すか、アンカーしたものをあなたに引き寄せる必要があります。

アンカーは、アンカーされたオブジェクトを他のオブジェクトに固定するためのものです。移動可能にしたい場合は、固定することはできません。

width: parent.width 
height: parent.height 

をしかし、それは同じサイズですが、あなたはそれを動かすと、それは明らか記入しません。

は、あなたはまだ設定することで、ドラッグされたオブジェクトあなたの親と同じ大きさを持っていますもう親は

あなたはこう言っているかもしれません。
「ねえ、彼らもオブジェクトを固定しますよ!

はい、彼らはありませんが、ラインもあります。

states: State { 
    when: mouseArea.drag.active 
    ParentChange { target: tile; parent: root } 
    AnchorChanges { target: tile; anchors.verticalCenter: undefined; anchors.horizontalCenter: undefined } 
} 

タイルがドラッグされているときアンカーを持ち上げるます。

関連する問題