我有一個代表附加到我的TableViewColumn
,其中包含MouseArea
。我使用MouseArea
來檢測表格中單個單元格的雙擊,這允許我顯示一個TextField
用於編輯目的。如何正確處理鼠標區域重疊的QML TableView中的鼠標事件?
問題是代表MouseArea
阻止鼠標事件傳播到TableView
。這意味着TableView
的選擇行爲不再有效。具體來說,我已啓用SelectionMode.ExtendedSelection
。
的MouseArea
子項很簡單,原來是這樣的:
MouseArea{
id: mousearea
anchors.fill: parent
onDoubleClicked: {
showTextField()
}
}
諮詢文件後,它看起來像這應該工作:
MouseArea{
id: mousearea
anchors.fill: parent
propagateComposedEvents: true // new
onDoubleClicked: {
showTextField()
}
onPressed: mouse.accepted = false // new
}
它的確,除了現在我不能選擇雙擊事件(在MouseArea
)!這是有道理的,因爲它在文檔中後來指出:
壓(的MouseEvent鼠標)
在處理該信號,用鼠標參數的接受屬性來控制這個鼠標區域是否處理媒體和所有未來的鼠標事件直到發佈。默認是接受該事件,並且不允許其中的其他MouseAreas處理該事件。 如果接受設置爲false,則在下一個按鈕被按下之前,不會再有事件發送到此MouseArea。
似乎沒有辦法在TableView
級別捕獲單個單元格的鼠標事件。這是我第一次使用QML玩遊戲,所以我可能錯過了一些明顯的東西,但我的選擇是什麼?注意我正在使用PyQt。
'MouseAreas'在哪裏重疊,你想爲每個行爲做什麼? – derM
對不起,我編輯了我的答案,包括更多的細節。請看第二段。 – woggy
所以你想要存檔的唯一東西是選擇行? – derM