0

問題に苦しんでいます。それほど難しくはないと思いますが、解決できません。QML に関する私の経験は非常に少ないです。私はあなたの助けに感謝します。

画像として3つのラジオボタンがあります。キーを押すとラジオ ボタン間でフォーカスが移動するため、ボタンが強調表示されます。(ラジオボタンのフォーカスが変わるとソース画像も変わるので、フォーカスのあるラジオボタンは他の画像で強調表示されます)。

問題: マウス (ソース コードを参照) を操作すると、ソース (画像) が変更されなくなります…..わかりません… マウス操作の前にソースが変更されていました。デバッガーで、マウスの操作後にソース行に到達しないことを確認しました。

ソース画像に変更するのは正しい方法ではないと思います...解決するのを手伝うか、代替案を教えてください

Rectangle { //main container
    id: rectangle1
    x: 0
    y: 0

    width: 480
    height: 620
    color: "#ffffff"
   Item { // focus scope container
       id: focus_object
       focus : true

       Image { //  radio button 1
           id: rock
           x: 5
           y: 6
           fillMode: Image.PreserveAspectFit
           smooth: true
           focus:true
           source: focus ? "Radiobutton_unselected_highlighted.png" : "Radiobutton_unselected.png"


           KeyNavigation.right: pop


           MouseArea {
               anchors.fill: parent
               hoverEnabled: true
               onEntered: {
                   parent.source = "Radiobutton_unselected_highlighted.png"
               }
               onExited: {
                   parent.source = "Radiobutton_unselected.png"
               }
               onClicked:{
                }
           }
       }

       Image { // radio button 2
           id: pop
           x: 160
           y: 6
           width: 64
           height: 64
           fillMode: Image.PreserveAspectFit
           smooth: true
           source: focus ?  "Radiobutton_unselected_highlighted.png" : "Radiobutton_unselected.png"




           KeyNavigation.left: rock

           KeyNavigation.right: classic

           MouseArea {
               anchors.fill: parent
               hoverEnabled: true
               onEntered: {
                   parent.source = "Radiobutton_unselected_highlighted.png"
               }
               onExited: {
                   parent.source = "Radiobutton_unselected.png"
               }
               onClicked:{

               }

       }
       Image { // radio button 3
               id: classic
               x: 306
               y: 6
               width: 64
               height: 64
               fillMode: Image.PreserveAspectFit
               smooth: true

               source :  focus ? "Radiobutton_unselected_highlighted.png" : "Radiobutton_unselected.png"
               KeyNavigation.left: pop

               MouseArea {
                   anchors.fill: parent
                   hoverEnabled: true
                   onEntered: {
                       if (true == focus)
                       parent.source = "Radiobutton_unselected_highlighted.png"

                   }
                   onExited: {
                       parent.source = "Radiobutton_unselected.png"
                   }
                   onClicked:{

                   }
               }
           }
       }
    }


  }
4

1 に答える 1

0

:ここでは、代入演算子ではなくを使用していることに注意してください=-

source: focus ? "Radiobutton_unselected_highlighted.png" : "Radiobutton_unselected.png"

これは、プロパティに固定値を割り当てるだけでなく、バ​​インディングを確立していることを意味します。

したがって、次のようなものがある場合

x : y

プロパティ「x」を変更する場合は、プロパティを直接変更するのではなく、このプロパティ「x」が依存またはバインドされているプロパティ「y」を変更します。

あなたの場合 -

Image 
{ //  radio button 1
       id: rock
       x: 5
       y: 6
       fillMode: Image.PreserveAspectFit
       smooth: true
       focus:true
       source: focus ? "Radiobutton_unselected_highlighted.png" : "Radiobutton_unselected.png"   

       KeyNavigation.right: pop

       MouseArea 
       {
           anchors.fill: parent
           hoverEnabled: true
           onEntered: 
           {
              rock.focus = true
           }

           onExited: 
           {
              rock.focus = false                    
           }

           onClicked:
           {

           }
       }
}     

詳細については、qml プロパティ バインディングを参照してください。

于 2013-05-03T04:41:01.690 に答える