Slider.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include "Slider.h"
  2. #include <QDebug>
  3. #include <QMouseEvent>
  4. #include <QCommonStyle>
  5. Slider::Slider(QWidget *parent)
  6. : QSlider(Qt::Horizontal, parent)
  7. {
  8. }
  9. Slider::~Slider()
  10. {
  11. }
  12. bool Slider::event(QEvent *event)
  13. {
  14. switch (event->type()) {
  15. case QEvent::KeyPress:
  16. case QEvent::KeyRelease: {
  17. event->accept();
  18. return true;
  19. break;
  20. }
  21. case QEvent::MouseButtonPress:
  22. case QEvent::MouseButtonRelease:
  23. case QEvent::MouseMove: {
  24. event->ignore();
  25. break;
  26. }
  27. default: {
  28. break;
  29. }
  30. }
  31. return QSlider::event(event);
  32. }
  33. void Slider::mousePressEvent(QMouseEvent *event)
  34. {
  35. QCommonStyle style;
  36. int value = style.sliderValueFromPosition(minimum(), maximum(), event->pos().x(), width());
  37. setValue(value);
  38. setSliderDown(true);
  39. emit sliderPressed(value);
  40. }
  41. void Slider::mouseMoveEvent(QMouseEvent *event)
  42. {
  43. QCommonStyle style;
  44. int value = style.sliderValueFromPosition(minimum(), maximum(), event->pos().x(), width());
  45. setValue(value);
  46. emit sliderMoved(value);
  47. }
  48. void Slider::mouseReleaseEvent(QMouseEvent *event)
  49. {
  50. QCommonStyle style;
  51. int value = style.sliderValueFromPosition(minimum(), maximum(), event->pos().x(), width());
  52. setValue(value);
  53. setSliderDown(false);
  54. emit sliderReleased(value);
  55. }