如何停止QTreeWidget移动滚动位置?

4 投票
1 回答
3016 浏览
提问于 2025-04-17 06:09

我有一个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)

撰写回答