うーん...このタスクはC++で実装する必要がありますか?私は(OSXで例えばQuickTimeの)のようなメディアプレーヤーを作ることにQMLを使用しています...QML: "全体"ウィンドウのマウス移動イベントを監視する
を知らないマウスイベントを検出することができますインターフェイス、:
マウスアイドル期間のためにすべてのコントロールパネルを非表示にして、VideoOutput
のみを表示します。または、マウスが窓から出てすぐに、すぐに同じことをしてください。
だから私の要件は次のとおりです。
- モニタ、マウス移動イベント全体のウィンドウ内
- は、他のコンポーネントに元のマウスイベントをブロックしません。
より正確に、擬似コードを参照してください。
MouseArea {
anchors.fill: applicationWindow // <- This is wrong and will throw error
hoverEnabled: true
/* After reading the Qt doc, this property seems should be
placed in a MouseArea, which is under another MouseArea.
When child has mouse event, it propagate up to parent MouseArea.
So this should be also wrong. */
propagateComposedEvents: true
onClicked: mouse.accepted = false;
onPressed: mouse.accepted = false;
onReleased: mouse.accepted = false;
onDoubleClicked: mouse.accepted = false;
onPressAndHold: mouse.accepted = false;
onPositionChanged: {
console.log("moved!", mouse.x, mouse.y)
mouse.accepted = false
}
}
'anchor.fill:parent'よりも' MouseArea'をウィンドウの最後の子アイテムとして配置してください。 'propagateComposedEvents'は必要ありません。 – Fabio
anchors.fill:applicationWindow.contentItem – folibis
C++ソリューションを調べるには、 'QGuiApplication'オブジェクトにイベントフィルタをインストールする必要があります。 'QObject :: eventFilter()'を参照してください –