当前位置:   article > 正文

QComboBox实现鼠标循环滚动_qcombobox 列表自动滚动

qcombobox 列表自动滚动

QComboBox使用鼠标进行滚动时,如果滚动到第一项或最末项会停止滚动。并且获取到的索引是变化后的,如向上滚动时第二项变至第一项,获得的索引为0,与在第一项向上滚动相同,可利用此特性判断是否需要循环滚动。

也因此不能直接在槽函数中获取当前索引来判断。,需重写鼠标滚动事件,提前获取未滚动前的索引。并在索引为0时设为最末,索引为最末时设为0。

  1. class ComboBox(QComboBox):
  2. wheeled = pyqtSignal()
  3. def __init__(self, parent=None):
  4. super(ComboBox, self).__init__(parent)
  5. def wheelEvent(self, event):
  6. idx = self.currentIndex() # 滚动前
  7. super().wheelEvent(event)
  8. idx1 = self.currentIndex() # 滚动后
  9. if event.isAccepted():
  10. if idx == idx1 == 0:
  11. self.setCurrentIndex(self.count() - 1)
  12. self.wheeled.emit()
  13. elif idx == idx1 == self.count() - 1:
  14. self.setCurrentIndex(0)
  15. self.wheeled.emit()
  16. '''
  17. # 信号与槽(打印索引示例):
  18. cbl = ComboBox()
  19. cbl.addItems([1, 2, 3, 4, 5])
  20. cbl.activated.connect(lambda : print(cbl.currentIndex()))
  21. cbl.wheeled.connect(lambda : print(cbl.currentIndex()))
  22. '''

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/80669
推荐阅读
相关标签
  

闽ICP备14008679号