Михаил Сермяжко
30 октября 2019 г. 23:22

Как в QML сочетать Map и MouseArea

Map

Добрый день.
Использую этот код
Если использовать MouseArea, то не получается передвгать карту. Скажите пожалуйста, как получать сигнал от MouseArea при нажатии и иметь возможность передвигать карту мышкой?

3

Вам это нравится? Поделитесь в социальных сетях!

3
zloi
  • 30 октября 2019 г. 23:45

Возможно вам поможет свойство propagateComposedEvents, оно позволяет передавать события мыши ниже по уровню.

    Михаил Сермяжко
    • 31 октября 2019 г. 1:35
    • (ред.)

    Сделал так, не момогло. В документации говорится, что это работает только для MouseArea.

    1. Map {
    2. id: mapview
    3. anchors.fill: parent
    4. plugin: plugin
    5. center: QtPositioning.coordinate(59.91, 10.75)
    6. zoomLevel: 14
    7.  
    8. MapItemView{
    9. model: markerModel
    10. delegate: mapcomponent
    11. }
    12. }
    13.  
    14. Component {
    15. id: mapcomponent
    16. MapQuickItem {
    17. id: marker
    18. anchorPoint.x: image.width/4
    19. anchorPoint.y: image.height
    20. coordinate: position
    21.  
    22. sourceItem: Image {
    23. id: image
    24. source: "qrc:/Images/Images/markerRed.png"
    25. }
    26. }
    27. }
    28.  
    29. MouseArea {
    30. anchors.fill: parent
    31. propagateComposedEvents: true
    32. onPressAndHold: {
    33. var coordinate = mapview.toCoordinate(Qt.point(mouse.x,mouse.y))
    34. markerModel.addMarker(coordinate)
    35. }
    36. }
      Михаил Сермяжко
      • 31 октября 2019 г. 1:52
      • Ответ был помечен как решение.

      Вот так работает

      1. Map {
      2. id: mapview
      3. anchors.fill: parent
      4. plugin: plugin
      5. center: QtPositioning.coordinate(59.91, 10.75)
      6. zoomLevel: 14
      7.  
      8. MapItemView{
      9. model: markerModel
      10. delegate: mapcomponent
      11. }
      12.  
      13. MouseArea {
      14. anchors.fill: parent
      15. onPressAndHold: {
      16. var coordinate = mapview.toCoordinate(Qt.point(mouse.x,mouse.y))
      17. markerModel.addMarker(coordinate)
      18. }
      19. }
      20. }
      21.  
      22. Component {
      23. id: mapcomponent
      24. MapQuickItem {
      25. id: marker
      26. anchorPoint.x: image.width/4
      27. anchorPoint.y: image.height
      28. coordinate: position
      29.  
      30. sourceItem: Image {
      31. id: image
      32. source: "qrc:/Images/Images/markerRed.png"
      33. }
      34. }
      35. }

        Комментарии

        Только авторизованные пользователи могут публиковать комментарии.
        Пожалуйста, авторизуйтесь или зарегистрируйтесь
        • Последние комментарии
        • IscanderChe
          12 апреля 2025 г. 17:12
          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
        • AK
          1 апреля 2025 г. 11:41
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          9 марта 2025 г. 21:02
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          9 марта 2025 г. 16:14
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
        • ИМ
          22 ноября 2024 г. 21:51
          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…