slider-ignorewheel.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "slider-ignorewheel.hpp"
  2. SliderIgnoreScroll::SliderIgnoreScroll(QWidget *parent) : QSlider(parent)
  3. {
  4. setFocusPolicy(Qt::StrongFocus);
  5. }
  6. SliderIgnoreScroll::SliderIgnoreScroll(Qt::Orientation orientation,
  7. QWidget *parent)
  8. : QSlider(parent)
  9. {
  10. setFocusPolicy(Qt::StrongFocus);
  11. setOrientation(orientation);
  12. }
  13. void SliderIgnoreScroll::wheelEvent(QWheelEvent *event)
  14. {
  15. if (!hasFocus())
  16. event->ignore();
  17. else
  18. QSlider::wheelEvent(event);
  19. }
  20. void SliderIgnoreClick::mousePressEvent(QMouseEvent *event)
  21. {
  22. QStyleOptionSlider styleOption;
  23. initStyleOption(&styleOption);
  24. QRect handle = style()->subControlRect(QStyle::CC_Slider, &styleOption,
  25. QStyle::SC_SliderHandle, this);
  26. if (handle.contains(event->position().toPoint())) {
  27. SliderIgnoreScroll::mousePressEvent(event);
  28. dragging = true;
  29. } else {
  30. event->accept();
  31. }
  32. }
  33. void SliderIgnoreClick::mouseReleaseEvent(QMouseEvent *event)
  34. {
  35. dragging = false;
  36. SliderIgnoreScroll::mouseReleaseEvent(event);
  37. }
  38. void SliderIgnoreClick::mouseMoveEvent(QMouseEvent *event)
  39. {
  40. if (dragging) {
  41. SliderIgnoreScroll::mouseMoveEvent(event);
  42. } else {
  43. event->accept();
  44. }
  45. }