Я пытаюсь отфильтровать события касания из нескольких точек касания.Так что установили EventFilter, который реагирует и использует события с несколькими точками касания, чтобы вернуть false.Когда я запустил образец qml, щелчок мышью первоначально работает с одним касанием окна, и я делаю многократное касание окна, событие поглощается фильтром событий (как и ожидалось), но затем, когда я снова делаю одно касание окна, MouseArea никогдаполучает событие.Я также попытался с отладкой по возвращении фильтра событий, когда действительно возвращает ложь для одной точки касания. Версия Qt-> 5.9.4 32-разрядная версия MingW в Windows
bool MultipleTouchFilter::eventFilter(QObject *obj, QEvent *event)
{
qDebug() <<"Object name " << obj->objectName();
QTouchEvent * eventTouch = dynamic_cast< QTouchEvent * >(event);
if(eventTouch != nullptr && eventTouch->touchPoints().count() > 1)
return true;
else
return false;
}
Я установил этот фильтр в QCoreApplication
QCoreApplication *app = QCoreApplication::instance();
if (app) {
app->installEventFilter(m_multitouchFilter);
}
main.qml
Window {
objectName: "main window"
visible: true
width: 640
height: 480
title: qsTr("Hello World")
MouseArea{
objectName: "MouseArea"
anchors.fill: parent
onClicked: {
console.log("Single touch ")
}
}
}