У меня есть 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.