我计划创建一个两个 listWidget 并且它们具有相同数量的列表。因此,当一个 listWidget 上下滚动时,另一个也会移动它的列表。但是,我找不到相关的信号。我错过了什么?
问问题
3897 次
3 回答
7
您需要将一个滚动条的valueChanged
信号连接到另一个滚动条的setValue
插槽(反之亦然)。
乍一看,这似乎是危险的递归,但 Qt 似乎可以毫无问题地处理它,如下例所示:
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.listA = QtGui.QListWidget(self)
self.listB = QtGui.QListWidget(self)
layout = QtGui.QHBoxLayout(self)
layout.addWidget(self.listA)
layout.addWidget(self.listB)
for index in range(100):
self.listA.addItem('Sample text for Item %d' % index)
self.listB.addItem('Sample text for Item %d' % index)
self.listA.horizontalScrollBar().valueChanged.connect(
self.listB.horizontalScrollBar().setValue)
self.listB.horizontalScrollBar().valueChanged.connect(
self.listA.horizontalScrollBar().setValue)
self.listA.verticalScrollBar().valueChanged.connect(
self.listB.verticalScrollBar().setValue)
self.listB.verticalScrollBar().valueChanged.connect(
self.listA.verticalScrollBar().setValue)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
于 2011-12-29T18:42:12.273 回答
1
QListWidget继承QListView,继承QAbstractItemView,...
无论如何,您可以看到所有 QListWidget 成员单击所有成员的列表,包括继承的成员,您可以在其中找到verticalScrollBar () const : QScrollBar *方法,该方法继承自 QAbstractScrollArea。
您可以连接到listWidget
的垂直滚动条valueChanged信号:
listWidget.verticalScrollBar().valueChanged.connect(onScrollBarValueChanged)
onScrollBarValueChanged
插槽(信号处理程序)在哪里。
于 2011-12-29T13:22:22.070 回答
0
要跟踪滚动条的移动,您必须重新实现scrollContentsBy()
虚函数。也看看QAbstractSlider::actionTriggered()
信号和sliderPosition
属性
于 2011-12-29T10:21:17.873 回答