[Interest] QtLocation MapPolyLine and MouseArea

maitai maitai at virtual-winds.org
Fri Mar 8 08:18:28 CET 2019


Thanks Shawn, that looks the best approach, I 'll give it a try.

Le 07-03-2019 20:29, Shawn Rutledge a écrit :
>> On 7 Mar 2019, at 18:32, maitai <maitai at virtual-winds.org> wrote:
>> 
>> Hi,
>> 
>> I need to trigger various actions whenever a MapPolyLine is hovered or 
>> pressed, such as displaying a tooltip, a menu, etc.
>> 
>> I have put a MouseArea on it with anchors.fills: parent, but the 
>> problem is that the mouse area does not represent the line, but the 
>> polygon made by the line. For instance if you have a L shape, entered 
>> event and so on is triggered when you enter the bounding rectangle of 
>> the line, not when you hover over the line itself.
>> 
>> On a QGraphicsScene we had the shape() protected method for that kinds 
>> of case, for instance with a QPainterPathStroker to give some 
>> thickness to the line's "mousearea".
>> 
>> I will probably end with a custom property that will carry the pixel 
>> distance between the line segments and the mouse coordinates, but this 
>> is going to be heavy to compute (I have potentially hundreds of 
>> complicated lines on the map).
>> 
>> Is there a better way or even better a standard way to do that?
> 
> Check out containmentMask: that’s how you can redefine the behavior of
> MouseArea’s contains() method in QML.
> 
> You could use HoverHandler and/or TapHandler though, and then perhaps
> set containmentMask on the polyline itself if behavior is still not
> what you want (I haven’t tried it with MapPolyLine myself, only with
> QtQuick.Shapes).


More information about the Interest mailing list