我使用与QColumnView结合的QStandardItemModel来显示简单的分层树结构列表。我的视图有2列,第二列上的行是第一列上项目的子项。当用户选择第1列上的项目/行时,该项目/行的子项将显示在第二列上。现在来了QColumnView令人讨厌的行为:虽然我的列表只有2列,但每当用户点击第二列的项目时,它会自动进一步滚动到右边的第三列(这是空的)。
from PyQt4 import QtCore, QtGui
import sys
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
categories = {"Develop": ["py", "rb", "h", "html", "css"],
"Image": ["jpg", "jpeg", "bmp", "gif", "png"],
"Movies": ["avi", "mkv", "mov", "mp4"],
"Documents": ["doc", "docx", "xls", "xlsx", "ppt", "pptx"],
"Music": ["mp3", "wav"]}
model = QtGui.QStandardItemModel()
for cat, types in categories.items():
catItem = QtGui.QStandardItem(cat)
catItem.setCheckable(True)
for type in types:
typeItem = QtGui.QStandardItem(type)
typeItem.setCheckable(True)
#typeItem.setSelectable(False)
catItem.appendRow(typeItem)
model.appendRow(catItem)
columnView = QtGui.QColumnView()
columnView.setModel(model)
columnView.show()
sys.exit(app.exec_())