2013-07-03 2 views
2

Я пытаюсь получить MultiPointTouchArea работает ... Я нашел действительно простой пример на QT:QT MultiPointTouchArea не работает

http://qt-project.org/doc/qt-5.0/qtquick/qml-qtquick2-multipointtoucharea.html

import QtQuick 2.0 

Rectangle { 
width: 400; height: 400 
MultiPointTouchArea { 
    anchors.fill: parent 
    touchPoints: [ 
     TouchPoint { id: point1 }, 
     TouchPoint { id: point2 } 
    ] 
} 

Rectangle { 
    width: 30; height: 30 
    color: "green" 
    x: point1.x 
    y: point1.y 
} 

Rectangle { 
    width: 30; height: 30 
    color: "yellow" 
    x: point2.x 
    y: point2.y 
} 
} 

Но если я двигаю мышь ничего не происходит ... Позиция всегда равна x = 0, y = 0. Но документация говорит мне: «Свойство Item :: enabled используется для включения и выключения обработки касания. При отключении сенсорная область становится прозрачной для мыши/касания Мероприятия." Итак, MultiPointTouchArea не отключен, поэтому он должен работать? Или я ошибаюсь?

ответ

2

Я пробовал свой код, как на моем планшете Android, и он работает нормально. Первые элементы управления пальцем перемещают зеленый прямоугольник, а второй палец перемещает желтый прямоугольник. Я на Qt 5.4 (последний на данный момент)

Вы используете этот пример на планшете или на настольном компьютере? Если вы находитесь на рабочем столе с помощью обычной мыши, вы можете перемещать зеленый прямоугольник, одновременно нажимая левую кнопку мыши. touch требует нажатия мыши для работы.

Что именно вы пытаетесь достичь? Похоже, что вы действительно хотите, это MouseArea с hoverEnabled, установленным в true.

Попробуйте это:

import QtQuick 2.0 

Rectangle { 
    width: 400; height: 400 

    property point point1; 
    property point point2; 

    MouseArea { 
     anchors.fill: parent 
     hoverEnabled: true 

     onPositionChanged: { 
      if (pressed) 
      { 
       parent.point1.x = mouse.x; 
       parent.point1.y = mouse.y; 
      } 
      else 
      { 
       parent.point2.x = mouse.x; 
       parent.point2.y = mouse.y; 
      } 
     } 
    } 

    Rectangle { 
     width: 30; height: 30 
     color: "green" 
     x: parent.point1.x 
     y: parent.point1.y 
    } 

    Rectangle { 
     width: 30; height: 30 
     color: "yellow" 
     x: parent.point2.x 
     y: parent.point2.y 
    } 
} 
+0

Спасибо за ответ :) – mkl

Смежные вопросы