Tôi đang triển khai trình thu nhận cử chỉ (vuốt sang trái/phải) bằng MouseArea. Nó sẽ hoạt động bên trong Flickable với flickableDirection dọc. Ngoài ra, nó sẽ truyền bá các sự kiện chuột đến các phần tử khác bên dưới nó theo thứ tự hình ảnh. Vấn đề là mouseArea con với propagateComposedEvents đặt thành true là chặn bất kỳ cảnh cáo nào của cha mẹ trước chính xác một cú nhấp chuột được thực hiện. Sau khi nhấp chuột đầu tiên được thực hiện nó hoạt động chính xác. Đây là mã đơn giản được hiển thị này.MouseArea bên trong Flickable đang ngăn không cho nó nhấp nháy
import QtQuick 2.4
import QtQuick.Window 2.2
Window {
id: __root
visible: true
width: 460; height: 640
Flickable {
id: mainFlickable
width: parent.width
height: parent.height
contentHeight: column.height
flickableDirection: Flickable.VerticalFlick
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
z: 1
}
Column {
id: column
width: parent.width
Repeater {
model: 5
Rectangle {
width: __root.width
height: 200
color: "yellow"
border.width: 2
MouseArea {
anchors.fill: parent
onClicked: {
console.log("clicked")
}
}
}
} //repeater
} //column
} //flickable
} //window
Tôi đã dành khá nhiều thời gian để sửa lỗi này và sẽ đánh giá cao bất kỳ trợ giúp nào. Cảm ơn trước!
+1 cho mã hoạt động: đó là trình tiết kiệm thời gian! Đối với vấn đề, nó có mùi giống như một lỗi đối với tôi. Các sự kiện 'Đã nhấn' được * tự động * chấp nhận và đó là những gì xảy ra lần đầu tiên, tức là' MouseArea' bên ngoài sẽ ăn mòn sự kiện. Sau đó, điều khiển 'Flickable' có thể kiểm soát. Có vẻ như 'Flickable' cần một "ấm lên". Không chắc chắn nếu tập trung có thể giúp đỡ. Có thể giải pháp, hy vọng nó không phá vỡ trường hợp sử dụng của bạn, là việc bổ sung 'onPressed: mouse.accepted = false' vào bên ngoài' MouseArea' để luôn truyền bá các sự kiện 'ép'. – BaCaRoZzo
Cảm ơn câu trả lời của bạn! Mặc dù Flickable làm việc với workaround này, nó sẽ phá vỡ mã của tôi, bởi vì tôi sẽ không nhận được tín hiệu 'positionChanged' và' release' nếu con chuột bị từ chối trên báo chí. Tôi đã cố gắng để từ chối nó chỉ khi một số khoảng cách được thực hiện trên XAxis (trong onPositionsChanged) nhưng nó không hoạt động ở đó. Ngoài ra, tập trung không phải là giúp đỡ. – rsht
Tập trung là một cơn đau ở cổ. Tôi cũng đang cố gắng sử dụng nó. Uhm ... bạn không thể sử dụng 'drag' +' MouseX' để chặn các swipes? – BaCaRoZzo