Ich habe es einmal versucht und es hat nicht funktioniert, die äußere Liste behandelt alle Ereignisse. Die Lösung war, zusätzlich zu den ListViews ein Flickable zu haben und den contentX des horizontalen und contentY der vertikalen Listen zu contentX und contentY des Flickable zu verankern.
Einige semi-vollständige Code, um das Prinzip zu zeigen:
%Vor% Sie haben eine MouseArea
in Ihrer vertikalen Listenansicht, die alle Ereignisse zu Ihrer horizontalen ListView stiehlt. Best Practice in QML besteht darin, alle MouseArea
-Komponenten in den Delegaten aufzunehmen.
Verwenden Sie anstelle der indexAt(mouseX,mouseY)
-Methode auch die index
-Eigenschaft, die allen Delegierten zur Verfügung steht.
Um das Mausereignis aus dem% s MouseArea
des Listendelegierten an den MouseArea
des list2-Delegaten zu propagieren, verwenden Sie mouse.accepted = false
Sie können die Eigenschaft z
verwenden, damit äußere Listen zuerst Mausereignisse behandeln.
Oder noch besser:
%Vor%Nicht ganz sicher, dass dies jedoch ein zuverlässiger und richtiger Weg ist.