如何停止QTreeWidget移动滚动位置?
我有一个QTreeWidget,里面有很多QTreeWidgetItems(树形控件的项目)。每个项目有几个列。当其中一列的宽度超过了控件的宽度时,底部会出现一个滚动条。当我点击一个在宽列里的QTreeWidgetItem时,QTreeWidget会自动滚动,尽量把这列的内容显示在控件里。我不想要这个自动滚动的功能。请问怎么关闭它?
1 个回答
8
这个行为是由 QAbstractItemView.autoScroll 属性控制的,你可以这样设置它:
treewidget.setAutoScroll(False)
不过,这个属性主要是用来在拖动项目到树形控件边缘时,自动滚动树形控件的视口。所以如果你还需要这种行为,可能更好的办法是重写树形控件的鼠标按下事件:
def mousePressEvent(self, event):
self.setAutoScroll(False)
QtGui.QTreeWidget.mousePressEvent(self, event)
self.setAutoScroll(True)