2 つの 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を継承し、QListViewはQAbstractItemViewを継承します。
とにかく、すべてのQListWidgetメンバーが、継承されたメンバーを含むすべてのメンバーのリストをクリックしているのを見ることができます。ここには、QAbstractScrollAreaから継承されたverticalScrollBar()const:QScrollBar*メソッドがあります。
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 に答える