次のコードは、赤い四角形と灰色の四角形を含む白い四角形を生成します。すべての長方形には関連付けられた MouseArea があります。灰色の四角形は、マウスでその中をクリックすると青くなります。赤い四角形は、マウス カーソルがその中に入るとコンソール メッセージを出力し、解放された信号が発せられると別のメッセージを出力します。
私はしたいと思います:
- 灰色の四角形の内側でマウス ボタンを押したままにします (青色になります)。
- ボタンを離さずに、カーソルを灰色/青色の長方形の外側に移動し、次に赤色の長方形の内側に移動し、赤色の長方形の入力信号をキャプチャします
- 赤い四角形の内側にカーソルがあるボタンを放し、赤い四角形の解放された信号をキャプチャします。
出来ますか?現在のコードでは、赤い四角形の入力信号は、入力中に mopuse ボタンが押されていない場合にのみ発せられ、ボタンがその四角形の内側で押された場合にのみ、解放された信号が発せられます。問題は、明らかに、ボタンが押された場合に灰色/青色の長方形がマウス イベントの制御を引き継ぐことです。
これは、私が開発中のアプリケーションで使用しているシナリオと似ていますが、簡略化されたシナリオです。
import QtQuick 2.0
Rectangle{
color: "white"
height: 210
width: 500
MouseArea{
id: mainMa
anchors.fill: parent
hoverEnabled: true
onReleased:{console.log("white-released")}
}
Column{
spacing: 10
Rectangle{
color: "red"
height: 100
width: 500
MouseArea{
anchors.fill: parent
hoverEnabled: true
propagateComposedEvents: true
onEntered:{console.log("red-enter")}
onReleased:{console.log("red-released")}
}
}
Rectangle{
color: "#666666"
height: 100
width: 500
MouseArea{
id: ma
anchors.fill: parent
hoverEnabled: true
onPressed: {parent.color = "blue"; console.log("grey pressed")}
onReleased: {parent.color = "#666666"; console.log("grey released")}
}
}
}
}