sto implementando gesto Catcher (colpo a sinistra/destra) con MouseArea. Dovrebbe funzionare all'interno di Flickable con verticale flickableDirection. Inoltre dovrebbe propagare gli eventi del mouse ad altri elementi sottostanti in ordine di stack visivo. Il problema è che mouseArea bambino con propagateComposedEvents impostata su true sta bloccando colpi di frusta qualsiasi dei genitori prima di esattamente un click è fatto. Dopo aver fatto il primo clic, funziona correttamente. Ecco un codice semplificato che mostra questo.MouseArea all'interno flickable è impedendole di sfogliando
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
Ho trascorso un po 'di tempo a cercare di risolvere questo problema e apprezzerò qualsiasi aiuto. Grazie in anticipo!
+1 per il codice di lavoro: questo è un risparmio di tempo! Per quanto riguarda il problema, mi sembra un insetto. Gli eventi 'Pressed' sono * automaticamente * accettati ed è ciò che accade la prima volta, cioè l'esterno' MouseArea' mangia l'evento. Dopo che il 'Flickable 'ottiene il controllo. Sembra che "Flickable" abbia bisogno di un "warm up". Non sono sicuro che la messa a fuoco possa aiutarti. soluzione possibile, sperando che non si rompe il vostro caso d'uso, è l'aggiunta di 'onPressed: mouse.accepted = false' alla esterno' MouseArea' per propagare sempre 'eventi pressed'. – BaCaRoZzo
Grazie per la tua risposta! Sebbene Flickable funzioni con questa soluzione alternativa, interromperà il mio codice, perché non riceverò i segnali "positionChanged" e "released" se il mouse viene rifiutato sulla stampa. Stavo cercando di respingerlo solo se viene fatta una certa distanza su XAxis (in onPositionsChanged) ma non funziona lì. Inoltre, la messa a fuoco non aiuta. – rsht
La messa a fuoco è un dolore al collo. Stavo anche cercando di usarlo. Uhm ... non puoi usare il 'drag' +' MouseX' per intercettare gli swipes? – BaCaRoZzo