1
我有兩個QTreeWidget的形式,一個沒有孩子,另一個孩子如下面的截圖所示。我希望如果合適的樹被摺疊(如果它被展開,則摺疊),每次選擇左樹中的項目時都會展開。蟒蛇 - 同步兩個QTreeWidgets
我試着用下面的代碼,在那裏我一個手柄功能連接到左側列表中的itemSelectionChanged事件來實現這一目標。問題是.collapse()和.expand()方法需要一個QIndexModel參數(繼承自QTreeView),但QTreeWidget使用了一個我不知道如何訪問的預定義模型。
任何人都可以在那裏給我手?
import sys
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.tree1 = QtGui.QTreeWidget(self)
self.tree2 = QtGui.QTreeWidget(self)
layout = QtGui.QHBoxLayout(self)
self.tree1.header().hide()
self.tree2.header().hide()
self.tree1.itemSelectionChanged.connect(self.handleSelected)
for text in 'A B C D'.split():
item = QtGui.QTreeWidgetItem(self.tree1, [text])
for text in '1 2 3 4'.split():
item = QtGui.QTreeWidgetItem(self.tree2, [text])
for text in 'red blue green'.split():
child = QtGui.QTreeWidgetItem(item, [text])
layout.addWidget(self.tree1)
layout.addWidget(self.tree2)
def handleSelected(self):
if self.tree2.isExpanded():
self.tree2.collapse()
else:
self.tree2.expand()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
謝謝@ ekhumoro,它現在很好用!乾杯。 – maurobio