2016-08-13 8 views
0

QMLでは、マウスを動かすと動くテキストを作成したいと思います。マウスがもう動かないときは、元の位置に戻ってください。私のマウスがテキストの上にあるときは、コード内の変数 'toogle'の値はtrueです。そうでないときはfalseです。テキストは常に限り、マウスが上にあるように移動されます。変数をQMLの固定値に設定する

property real distance: myText.x 

... 

Text { 
    id: myText 

    property bool toogle 
    x:toogle?distance+2:distance   
    } 

問題は、マウスが、テキストの上にあるときに、距離の値が増加されることと、それがループを作成することは明らかです。

テキストの作成時に元のx位置の値を保存し、この望ましくないループが発生しないように変更しないでください。

答えて

1

あなたがプロパティを定義し、コンポーネントのロードが完了するたびに一定の値に設定できます。

// Keep track of the original position. 
property real originalPosition; 

Component.onCompleted: { 
    originalPosition = myText.x; 
} 

私はあなたがテキストを動かし続けたいか、していない、しかしあなたの質問で少し混乱していますマウスがテキストの上を移動するときはいつでも?投稿したコードには既にバインディングループが含まれています。

検出するには、マウスを使用すると、テキストの位置をリセットできるようにするには、あなたのテキスト要素内MouseAreaを定義し、「containsMouse」プロパティを聞くことができる置い:

MouseArea { 
    id: mouseArea 
    width: parent.width 
    height: parent.height 
    hoverEnabled: true 
    onContainsMouseChanged: { 
     console.log("Changed: " + containsMouse); 
     if (!containsMouse) { 
      myText.x = myText.originalPosition; 
     } else { 
      myText.x = mouseArea.containsMouse ? myText.originalPosition+2: myText.originalPosition; 
     } 
    } 
} 

この最後の実装は、テキストだけを移動します2マウスがホバリングを停止するたびに、テキストがホバリングされ、元の位置に戻るたびにピクセルが表示されます。ホバリングされたときにテキストを2ピクセル連続して移動させません。

+1

まさに私が欲しかったことです、ありがとうございました! – Thommy

関連する問題