Qt EventFilter - Как только событие используется фильтром событий, элемент управления никогда не возвращается обратно в MouseArea - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь отфильтровать события касания из нескольких точек касания.Так что установили 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 ")
        }
    }
}
...