[Interest] QtLocation MapPolyLine and MouseArea
Shawn.Rutledge at qt.io
Thu Mar 7 20:29:28 CET 2019
> On 7 Mar 2019, at 18:32, maitai <maitai at virtual-winds.org> wrote:
> 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