我正在尝试从多个接触点中过滤掉接触事件。因此,已经安装了一个EventFilter,它会做出反应并消耗具有多个接触点的事件,否则会返回false。当我运行示例qml时,鼠标单击最初可以在窗口上单击,而我在窗口上进行多次触摸,事件被事件过滤器消耗(如预期的那样),但是当我再次在窗口上进行一次触摸时,MouseArea从不获取事件。我还尝试过在事件过滤器返回时使用调试,当单个接触点确实返回false时。 Qt版本-> Windows上的5.9.4 MingW 32位
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 ")
}
}
}