1. 程式人生 > >[PyQt] 自定義QSlider支援滑鼠點選和滾輪事件

[PyQt] 自定義QSlider支援滑鼠點選和滾輪事件

from PyQt4.QtGui import *
from PyQt4.QtCore import *


class progressSlider(QSlider):
    def __init__(self, orientation, parent=None):
        super(progressSlider, self).__init__(orientation, parent)

    def mousePressEvent(self, event):
        if self.topLevelWidget().mediaObj.state() != 2
: return new = QStyle.sliderValueFromPosition(self.minimum(), self.maximum(), event.x(), self.width()) self.setValue(new) self.emit(SIGNAL('sliderMoved(int)'), new) def mouseMoveEvent(self, event): if self.topLevelWidget().mediaObj.state() != 2: return
new = QStyle.sliderValueFromPosition(self.minimum(), self.maximum(), event.x(), self.width()) self.setValue(new) self.emit(SIGNAL('sliderMoved(int)'), new) def wheelEvent(self, event): max = self.maximum() min = self.minimum() if event.delta() >= 120
: #滾動3% new = self.value()+ max*0.03 if new > max: new = max self.setValue(new) self.emit(SIGNAL('sliderMoved(int)'), new) elif event.delta() <= -120: new = self.value()- max*0.03 if new < min: new = min self.setValue(new) self.emit(SIGNAL('sliderMoved(int)'), new)