【发布时间】:2019-08-13 16:03:43
【问题描述】:
我有 2 个不同的 QListwidgets,它们的滚动与下面的代码正确同步。问题是辅助 Qlistwidget(跟随另一个滚动的那个)不会更新它的项目,除非我用鼠标悬停在它上面。
我对 pyqt 的经验很少,所以我唯一尝试的是使用 repaint 和 update 方法(我在代码中添加了这两个方法,在函数的末尾)。不幸的是,什么都没有发生。
def move_scrollbar(vs, value):
vs.blockSignals(True)
vs.setValue(value)
vs.blockSignals(False)
self.list1.repaint()
self.list2.repaint()
self.list1.update()
self.list2.update()
vs1 = self.list1.verticalScrollBar()
vs2 = self.list2.verticalScrollBar()
vs1.valueChanged.connect(partial(move_scrollbar, vs2))
vs2.valueChanged.connect(partial(move_scrollbar, vs1))
我希望辅助或链接 QListwidget 的视图以与主(我实际滚动的那个)相同的方式更新。
【问题讨论】:
-
如果两个列表的项目数量相同,则所有项目的大小都相同并且您没有使用 ScrollPerPixel 滚动模式(除非它们的高度始终 b> 相同),将滚动条的
valueChanged信号连接到另一个setValue插槽就足够了,反之亦然(setValue不会更新当前值);此外,应该不需要调用更新(并且不需要调用 repaint 和 update),除非你对这些列表小部件做了一些奇怪的事情,或者他们的代表(自定义绘画,也许?)。
标签: python scroll pyqt5 qlistwidget