QVTKWidget получает повторяющиеся «события колеса» как события входа / выхода - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть QVTKWidget, class ViewportView : public QVTKWidget, на нем установлен фильтр событий:

bool ViewportInteractor::eventFilter(QObject* sender, QEvent* event) {
    switch (event->type()) {
    case QEvent::Type::MouseButtonDblClick:
    case QEvent::Type::MouseButtonPress:
    case QEvent::Type::MouseButtonRelease:
    case QEvent::Type::MouseMove:
        if (auto e = dynamic_cast<QMouseEvent*>(event)) {
            maybe_mouse_resolver->handleExternalMouseEvent(e);
            event->accept();
            return true;
        } else {
            ASDERR << "Unknown mouse event: " << event->type() << std::endl;
            return false;
        }
    case QEvent::Type::Wheel:
        if (auto e = dynamic_cast<QWheelEvent*>(event)) {
            maybe_mouse_resolver->handleExternalWheelEvent(e);
            event->accept();
            return true;
        } else {
            ASDERR << "Unknown wheel event: " << event->type() << std::endl;
            return false;
        }
    default:
        if(verbose){
            ASDERR << "Unhandled event type: " << event->type() << std::endl;
        }
        return false;
    }
}

Когда я прокручиваю 'не слишком быстро', я получаю аккуратно QWheelEvents, и все работает отлично.Когда я быстро прокручиваю, я получаю этот вывод:

wport_interactor.cpp: 486 18:50:21 (              eventFilter): Unhandled event type: 10
wport_interactor.cpp: 486 18:50:21 (              eventFilter): Unhandled event type: 11
wport_interactor.cpp: 486 18:50:21 (              eventFilter): Unhandled event type: 10
wport_interactor.cpp: 486 18:50:21 (              eventFilter): Unhandled event type: 11
wport_interactor.cpp: 486 18:50:21 (              eventFilter): Unhandled event type: 10
wport_interactor.cpp: 486 18:50:21 (              eventFilter): Unhandled event type: 11

, который выглядит как события входа и выхода:

class Q_CORE_EXPORT QEvent           // event base class
{
    enum Type {
        ....
        Enter = 10,                             // mouse enters widget
        Leave = 11,                             // mouse leaves widget

Я не понимаю, почему я получаю эти события.

Я использую Qt5.5, VTK 5.10.1.

...