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

        Комментарии

        Только авторизованные пользователи могут публиковать комментарии.
        Пожалуйста, авторизуйтесь или зарегистрируйтесь