版权声明:作者:carver 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 https://blog.csdn.net/Victor_zero/article/details/81091457
class myWidgetScrollArea(QScrollArea):
def __init__(self, father):
super().__init__()
self.fatherWidet = father
self.last_time_move_x = 0
self.last_time_move_y = 0
self.scrollBarX = self.horizontalScrollBar()
self.scrollBarY = self.verticalScrollBar()
def eventFilter(self, QObject, QEvent):
if QEvent.type() == QEvent.MouseMove:
self.fatherWidet.imageLabel.setCursor(QCursor(Qt.SizeAllCursor)) #设置为移动光标样式
if self.last_time_move_x == 0:
self.last_time_move_x = QEvent.pos().x()
if self.last_time_move_y == 0:
self.last_time_move_y = QEvent.pos().y()
distance_x = self.last_time_move_x - QEvent.pos().x()
distance_y = self.last_time_move_y - QEvent.pos().y()
#print(self.last_time_move_y, QEvent.pos().y(), distance_y, self.scrollBarY.value())
self.scrollBarX.setValue(self.scrollBarX.value() + distance_x)
self.scrollBarY.setValue(self.scrollBarY.value() + distance_y)
elif QEvent.type() == QEvent.MouseButtonRelease:
self.last_time_move_x = self.last_time_move_y = 0
self.fatherWidet.imageLabel.setCursor(QCursor(Qt.PointingHandCursor)) #还原为手型光标样式
return QWidget.eventFilter(self, QObject, QEvent)