slider-ignorewheel.cpp 1.1 KB

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