Как передать список TouchPoints из QML в C ++? - PullRequest
0 голосов
/ 31 января 2019

Я использую MultiPointTouchArea и хочу передать список точек соприкосновения стороне C ++ при каждом срабатывании onPressed, onReleased или onUpdated.

Это то, что я пробовал без успеха:

QML:

MultiPointTouchArea  {
  minimumTouchPoints: 1
  maximumTouchPoints: 2

  touchPoints: [
    TouchPoint { id: touch1 },
    TouchPoint { id: touch2 }
  ]

  onPressed: {
    myCPlusPlusClass.onPressed(touchPoints)
  }
}

C ++:

void myCPlusPlusClass::onPressed(const QList<QTouchEvent::TouchPoint>& list) 
{
  // Do something
}

Я зарегистрировал QListQTouchEvent :: TouchPoint в качестве метатипа, подобного так:

qRegisterMetaType<QList<QTouchEvent::TouchPoint>>("QList<QTouchEvent::TouchPoint>");

Я не получаю никакихошибки, однако список только я nullptr или аналогичный на стороне C ++.

Мой второй лучший вариант будет проходить TouchPoints индивидуально (не в списке).

Это можно решить?Если нет, каковы мои варианты передачи всей информации из TouchPoint на сторону C ++?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Если вы действительно настаиваете на использовании мультитач из C ++, вы можете просто перехватывать события касания на стороне C ++ и вообще не беспокоиться о MultiPointTouchArea, я имею в виду, если это буквально все, что вам нужно.

Довольно сложно ожидать, что этот код будет работать, список типов, которые неявно преобразуются назад и вперед между QML и C ++, не включают точки соприкосновения, а тем более списки таких.

Более разумный подход будет включать интерфейс, который будет получать только соответствующую входную информацию.

0 голосов
/ 31 января 2019

Я думаю, что можно было бы передать C ++ легко разбираемый «отчет» о состоянии компонента.Не знаю прямо сейчас, какие свойства есть в TouchPoint (ах), но, вероятно, выгрузка их в текст кажется легко выполнимой (возможно, с использованием Array.join).Затем выполните синтаксический анализ в C ++ и используйте эти данные.

...