2016-08-19 143 views
0

我想創建一個QML項目,當鼠標移出它時消失。這裏是我的代碼:從QML捕捉鼠標事件

Item { 
    id: disappearing_element 

    ListView { ... } 

    MouseArea { 
    id: collapser 
    anchors.fill: parent 
    propagateComposedEvents: true 
    hoverEnabled: true 

    onExited: { 
     disappearing_element.visible = false 
    } 
    } 
} 

它運作良好,但MouseArea傳播事件等onClicked()onDoubleClicked()只(如在Qt的文檔說的)。

有沒有辦法通知disappearing_element的小孩有關鼠標輸入和鼠標退出事件(不使用Popup元素)?

+0

你可以使用'disappearing_element.visible'來通知綁定到子項的通知,即'property bool someProp:parent.visible; onSomePropChanged:{...你的東西...} – dtech

+0

你誤解了我。我想將MouseEvent傳播給'disappearing_element'的兒童,以檢查它們中的一個是否包含鼠標光標。 –

+0

您是否嘗試過使用'ListView'的Item item(int x,int y)'函數? – dtech

回答

0

我認爲這是開發QtQuick應用程序時的常見需求之一。我們目前經常使用的一種解決方案是在需要檢查鼠標遏制的每個孩子中添加MouseArea,並在鼠標進入或退出時發出信號(並在主要項目中捕獲這些信號)。

當兒童用品也需要這樣的機制來管理他們的孩子時,事情會變得有些複雜。但是,對於常見的用法,這種方法對我們來說已經足夠了。