2013-01-07 45 views
1

可能可以,這是一個錯誤,但請往下看:在下面的代碼組合的Flipable和鼠標區域腳麻在QML

,在flipable前面的鼠標區域保持活躍時flipable翻轉(但相反的),甚至接管一些鼠標區域從背面:

import QtQuick 2.0 

Rectangle { 
    height: 500 
    width: 500 

    Flipable { 
     id: flipable 

     anchors.fill:parent 

     property bool flipped: false 

     front: Rectangle{ 
      color: "black" 
      anchors.fill: parent 

      Rectangle { 
       color:"darkgrey" 
       height: parent.height/2 
       width: parent.width/2 

       MouseArea { 
        anchors.fill: parent 
        onClicked: flipable.flip() 
       } 
      } 
     } 
     back: Rectangle { 
      id: yellow 
      color: "yellow" 
      anchors.fill: parent 

      MouseArea { 
       anchors.fill: parent 
       onClicked: yellow.color = "green" 
      } 
     } 

     transform: Rotation { 
      id: rotation 
      origin.x: flipable.width/2 
      origin.y: flipable.height/2 
      axis.x: 0; axis.y: 1; axis.z: 0  // set axis.y to 1 to rotate around y-axis 
      angle: 0 // the default angle 
     } 

     states: State { 
      name: "back" 
      PropertyChanges { target: rotation; angle: 180 } 
      when: flipable.flipped 
     } 

     transitions: Transition { 
      NumberAnimation { target: rotation; property: "angle"; duration: 400 } 
     } 

     function flip() { 
      flipped = !flipped 
     } 
    } 
} 

當你按下灰色區域的頁面翻轉,如果再次按下它(現在是右邊後面)再次翻轉。正確的行爲是黃色方塊變成綠色,即使點擊右上角。

謝謝!

+0

您應該添加一個明確的問題的...問題。 – hyde

回答

1

正確的行爲是黃色正方形變爲綠色,即使在右上角單擊時也是如此,即 。

我評論這行:

preventStealing: true // doesnt work with my QtQuick 1.0 

,它是行爲的正確方法。

你爲什麼把它放在第一位?

+0

不,不起作用 你能複製你的代碼嗎?也許你加了點什麼? 我編輯了上面所以它沒有preventStealing(相同的結果)。 –

2

啓用正面和背面的元素或者解決了這個問題對我來說:

front: Rectangle { 
    enabled: !parent.flipped 
    ... 
} 

back: Rectangle { 
    enabled: parent.flipped 
    ... 
} 
+0

非常感謝您發佈解決方案!花了5個小時試圖解決這個確切的問題...現在我感覺像一個tard。 :P – Andrew