मदों की z
मूल्य केवल भाई बहन पर लागू होता है और तत्काल (प्रत्यक्ष) माता-पिता: एक उच्च स्टैकिंग मूल्य के साथ
आइटम एक निचले क्रम stacking के साथ भाई बहनों में सबसे ऊपर बनाए जाते हैं। उसी स्टैकिंग मान वाले आइटम नीचे दिखाई देने वाले क्रम में नीचे खींचे जाते हैं। नकारात्मक स्टैकिंग मान वाले आइटम उनके माता-पिता की सामग्री के अंतर्गत खींचे जाते हैं।
के माता पिता/बच्चे परिदृश्य का परीक्षण करने के लिए एक छोटा सा उदाहरण देखें:
import QtQuick 2.3
import QtQuick.Window 2.0
Window {
visible: true
width: 200
height: 200
title: qsTr("Hello World")
flags: Qt.FramelessWindowHint
Rectangle {
color: "salmon"
width: 64
height: 64
anchors.centerIn: parent
Text {
text: "1"
}
Rectangle {
color: "steelblue"
x: 32
y: 32
width: 64
height: 64
Text {
text: "2"
}
Rectangle {
color: "orchid"
x: 16
y: -16
width: 64
height: 64
z: -2
Text {
text: "3"
}
}
}
}
}
हम तीसरे Rectangle
-2 के z
मूल्य निर्धारित करते हैं, उम्मीद है कि इसके पीछे जाना होगा पहला, लेकिन चूंकि यह दूसरे का बच्चा है और पहले नहीं, यह पहुंच से बाहर है। आइटम में अंतराल ancestory के मामले में कर रहे हैं: यह वही है खींचें में हो रहा है और उदाहरण ड्रॉप है।
इस पर आगे विस्तार से बता दें की Drag and Drop
उदाहरण से DragTile.qml
लेने के लिए और तुम्हारा करने के लिए एक समान तरीके से इसे संशोधित (यह एक ही बात को प्राप्त करने का एक अच्छा तरीका है, वैसे है) करते हैं:
states: State {
when: mouseArea.drag.active
ParentChange { target: tile; parent: root }
AnchorChanges { target: tile; anchors.verticalCenter: undefined; anchors.horizontalCenter: undefined }
PropertyChanges {
target: tile
z: 100
}
}
यह भी काम नहीं करेगा। यह देखने के लिए कि क्या हो रहा है, हम QSG_VISUALIZE
नामक एक अद्भुत छोटे पर्यावरण चर का उपयोग कर सकते हैं। विशेष रूप से, हम overdraw
विज़ुअलाइजेशन का उपयोग करना चाहते हैं, जो हमें हमारे दृश्य युक्त एक अच्छा घुमावदार 3 डी बॉक्स देता है। ऊपर हमारे PropertyChanges
के साथ भी, आप देख सकते हैं कि आइटम की स्टैकिंग क्रम में कोई बदलाव नहीं है:
सुनिश्चित करने के लिए है कि आइटम सब कुछ के शीर्ष पर प्रदान की गई है, तो आप एक वस्तु है कि करने के लिए यह माता पिता की जरूरत है वास्तव में सब कुछ से ऊपर।
Item {
id: dragContainer
anchors.fill: parent
}
DragTile
घटक है कि कंटेनर के लिए प्रतिनिधि पहुँच देता है के लिए एक संपत्ति जोड़ें:: हम tiles.qml
के अंत करने के लिए एक Item
जोड़ कर ऐसा कर सकते हैं
property Item dragParent
फिर, में कंटेनर आवंटित tiles.qml
:
delegate: DragTile { colorKey: "red"; dragParent: dragContainer }
इसके बाद, 0 में ParentChange
की parent
संपत्ति को संशोधित:
ParentChange { target: tile; parent: dragParent }
अंतिम परिणाम:
ध्यान दें कि मैं जानबूझकर "वापस" बटन को बाहर रखा गया है, लेकिन अगर आप इसे किसी कारण के लिए भी है कि ऊपर जाना बनाना चाहते थे, तो आप केवल dragContainer
पदानुक्रम को ऊपर ले जा सकते हैं।
उत्कृष्ट समाधान और स्पष्टीकरण! धन्यवाद! – user1914692
मैंने पैरेंट को शीर्ष दृश्य में बदल दिया है, यह अभी भी सभी विचारों के नीचे रहता है और यदि मैं पैरेंट ग्रिड आइटम बदलता हूं तो सही स्थिति पर वापस नहीं जा रहा है –
@ मिच आप कृपया इस प्रश्न को देख सकते हैं http://stackoverflow.com/ प्रश्न/40085507/दृश्य-मद-हो जाता है-गिरा-बाहर ड्रॉप-क्षेत्र में qml/40088897? noredirect = 1 # comment67740392_40088897 –