在PyQ中记住QTreeWidget的滚动值

2024-06-26 12:49:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个QTreeWidget,它从XML文件读取数据。如果XML文件在任何时候被更改(假设许多用户同时访问该文件),QTreeWidget将重新填充clear和reread。如果用户在QTreeWidget顶部以外的任何位置,滚动,并且在清除后重新填充,则默认情况下,用户将返回顶部。在

问题是,能否获得QTreeWidget的“滚动值”,然后在重新填充后返回到相同的值?如果是,怎么办?提前谢谢!在


Tags: 文件用户情况xml读取数据clearqtreewidgetreread
1条回答
网友
1楼 · 发布于 2024-06-26 12:49:39

你可以像你所要求的那样,滚动到以前的实际值,但是你确定你的结果总是相同的大小吗?这些数字对于再次把你带到正确的地点可能毫无意义。但仅供参考,您必须访问滚动条,获取其值,然后重新填充,然后再次滚动该值:

bar = treeWidget.verticalScrollBar()
yScroll = bar.value()
# repopulate here ...
treeWidget.scrollContentsBy(0, yScroll)

但更有用的方法是找到当前视图中或感兴趣的项,然后重新填充树,然后告诉树滚动到实际的项。那么现在项目在树中的哪个位置就不重要了(如果数据结构发生了重大变化)。在

首先按以下条件保存当前项:

^{pr2}$

一旦您有了那个数据值,不管是文本值还是其他一些自定义数据值,您就可以重新填充树,然后再次查找该项。在

# this is assuming the item is both present, 
# and referencing it by its string value
newItem = treeWidget.findItems(text)[0]
treeWidget.scrollToItem(newItem)

您可以修改它以适合您的实际项目类型。您可能正在项目上存储一些其他自定义值,以便再次找到它们。在

相关问题 更多 >