U
30 квітня 2021 р. 16:36

qml зажатая кнопка мыши в одной MouseArea и сигналы мыши из другой MouseArea

qml

Здравствуй, любимый форум и его гуру! Трепетно молю о мудрости и всевозможных подсказках в моей проблеме!

Имеется конструкция такого вида:

  1. ScrollView{
  2. id: _scroll
  3.  
  4. Column{
  5. Repeater{
  6. id: _repeater
  7. model: 5
  8. delegate: Item {
  9. id: _delegateItem
  10. width: 50px
  11. height: 50px
  12. property int currentIndex: index
  13.  
  14. MouseArea{
  15. id: _mouseArea
  16. anchors.fill: parent
  17.  
  18. onPressAndHold: {console.log("holded : " + currentIndex)}
  19. onReleased: {console.log("released : " + currentIndex)}
  20. onEntered: {console.log("entered : " + currentIndex)}
  21. }
  22. }
  23. }
  24.  
  25. Item{
  26. id: _elseItem
  27. }
  28. }
  29. }

Зажимая кнопку мыши в маусАрии №3 (условно будем считать, что № совпадает с индексом) - в консоль выводится "holded : 3", но если зажатую мышь перевести на другую маусАрию (допустим на №2) - то в консоль НЕ выводится "entered : 2".

Как добиться того, чтобы выводилось?

2

Вам це подобається? Поділіться в соціальних мережах!

3
Алексей Внуков
  • 30 квітня 2021 р. 23:46

добрый, вы не пробовали отслеживать область видимости мышки через:

  1. _mouseArea.containsMouse

и когда мышка будет в другой зоне видимости обрабатывать ее состояния?

    U
    • 11 травня 2021 р. 10:12
    • (відредаговано)

    прописал onContainsMouseChanged... Не помогло...
    Зажимаю левую кнопку мыши на кнопке №1, вывожу из области кнопки №1, перевожу в область кнопки №2, в дебаге инфа:
    -зажал №1
    -изменилась область №1
    и пока не отожмешь левую кнопку мыши - сигналы другой кнопки не обрабатываются

    ===

    Затем попробовал добавить в onReleased свойство containsMouse:

    1. onReleased: {
    2. if(containsMouse){
    3. console.log("release : " + currentIndex)
    4. }
    5. }

    Эффект тот же( не помогло(

      Алексей Внуков
      • 11 травня 2021 р. 19:53

      ну начнем с того что это чуть не так работает, для примера:

      1. ScrollView{
      2. anchors.fill: parent
      3. anchors.topMargin: 10
      4. id: _scroll
      5.  
      6. Column{
      7. anchors.fill: parent
      8. Repeater{
      9. id: _repeater
      10. anchors.fill: parent
      11. model: 5
      12. delegate: Rectangle {
      13. id: _delegateItem
      14. width: 150
      15. height: 50
      16. border.color: "red"
      17. color: _mouseArea.containsMouse?"green":"white"
      18. property int currentIndex: index
      19.  
      20.  
      21. MouseArea{
      22. id: _mouseArea
      23. anchors.fill: parent
      24. hoverEnabled: true
      25. onPressAndHold: {console.log("holded : " + currentIndex)}
      26. onReleased: {console.log("released : " + currentIndex)}
      27. onEntered: {console.log("entered : " + currentIndex)}
      28. }
      29. }
      30. }
      31.  
      32. Item{
      33. id: _elseItem
      34. }
      35. }
      36. }

      но когда переход с зажатой кнопкой то не отслеживает, думаю это проблема где-то глубоко в qml

        Коментарі

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Останні коментарі
        • Evgenii Legotckoi
          16 квітня 2025 р. 17:08
          Благодарю за отзыв. И вам желаю всяческих успехов!
        • IscanderChe
          12 квітня 2025 р. 17:12
          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
        • AK
          01 квітня 2025 р. 11:41
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          09 березня 2025 р. 21:02
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          09 березня 2025 р. 16:14
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…