Я использую Qt wheelEvent
для реализации прокрутки в пользовательском виджете. Обычно это работает нормально.
Однако при одновременном перетаскивании мыши и прокрутке колесиком мыши иногда случается, что вращение колесика мыши на один шаг вначале ничего не делает (нет wheelEvent
получено). Это может даже случайно произойти несколько раз подряд. В следующий раз, когда приложение получит wheelEvent
, оно получит накопленные event->angleDelta()
всех предыдущих событий, о которых не было сообщено отдельно. По-видимому, в этом случае события буферизуются вместе. Обратите внимание, что wheelEvent
может произойти в течение длительного времени после начального вращения колеса мыши в этом случае: это происходит только после повторного вращения колеса.
Это проблема, поскольку это означает, что мой Виджет иногда не правильно реагирует на прокрутку. Есть ли способ избежать такой буферизации и немедленно получить все события колеса?
Примечательно, что это поведение хорошо воспроизводимо, если одновременно перетаскивать мышь внутри виджета, который выполняет некоторые нетривиальные действия в результате. Поэтому я подозреваю, что это может произойти, если событие l oop кажется занятым. Но он, конечно, недостаточно занят, чтобы не справиться с каждым wheelEvent
. Поэтому я хотел бы отключить эту буферизацию.
Я наблюдаю это на Linux с Qt 5.12.0. Любая помощь приветствуется, спасибо.