Михаил Сермяжко
Oct. 30, 2019, 11:22 p.m.

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

Map

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

3

Do you like it? Share on social networks!

3
zloi
  • Oct. 30, 2019, 11:45 p.m.

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

    Михаил Сермяжко
    • Oct. 31, 2019, 1:35 a.m.
    • (edited)

    Сделал так, не момогло. В документации говорится, что это работает только для 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. }
      Михаил Сермяжко
      • Oct. 31, 2019, 1:52 a.m.
      • The answer was marked as a solution.

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

      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. }

        Comments

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Last comments
        • AK
          April 1, 2025, 11:41 a.m.
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          March 9, 2025, 9:02 p.m.
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          March 9, 2025, 4:14 p.m.
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
        • ИМ
          Nov. 22, 2024, 9:51 p.m.
          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
        • Evgenii Legotckoi
          Oct. 31, 2024, 11:37 p.m.
          Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup