Beispiel #1
0
bool MapWidget::eventFilter(QObject *object, QEvent *ev)
{
    if (ev->type() == QEvent::ToolTip) {
        QHelpEvent *event = static_cast<QHelpEvent *>(ev);
        QPoint mousePosition = event->pos();

        //check if mouse is intercepting some marker and show country name as tooltip
        for (const MapMarker &marker : markers) {
            QPointF markerPosition = getMarkerScreenCoordinate(marker);
            QRectF markerRect(markerPosition.x() - 2.5, markerPosition.y() - 2.5, 5, 5);
            if (markerRect.contains(QPointF(mousePosition))) {
                QToolTip::showText(event->globalPos(), marker.getCountryName());
                return true;
            }else {
                QToolTip::hideText();
                event->ignore();
            }
        }
    }
    return QWidget::eventFilter(object, ev);
}