2024-06-26 12:49:39 发布
网友
我有一个QTreeWidget,它从XML文件读取数据。如果XML文件在任何时候被更改(假设许多用户同时访问该文件),QTreeWidget将重新填充clear和reread。如果用户在QTreeWidget顶部以外的任何位置,滚动,并且在清除后重新填充,则默认情况下,用户将返回顶部。在
问题是,能否获得QTreeWidget的“滚动值”,然后在重新填充后返回到相同的值?如果是,怎么办?提前谢谢!在
你可以像你所要求的那样,滚动到以前的实际值,但是你确定你的结果总是相同的大小吗?这些数字对于再次把你带到正确的地点可能毫无意义。但仅供参考,您必须访问滚动条,获取其值,然后重新填充,然后再次滚动该值:
bar = treeWidget.verticalScrollBar() yScroll = bar.value() # repopulate here ... treeWidget.scrollContentsBy(0, yScroll)
但更有用的方法是找到当前视图中或感兴趣的项,然后重新填充树,然后告诉树滚动到实际的项。那么现在项目在树中的哪个位置就不重要了(如果数据结构发生了重大变化)。在
首先按以下条件保存当前项:
一旦您有了那个数据值,不管是文本值还是其他一些自定义数据值,您就可以重新填充树,然后再次查找该项。在
# this is assuming the item is both present, # and referencing it by its string value newItem = treeWidget.findItems(text)[0] treeWidget.scrollToItem(newItem)
您可以修改它以适合您的实际项目类型。您可能正在项目上存储一些其他自定义值,以便再次找到它们。在
你可以像你所要求的那样,滚动到以前的实际值,但是你确定你的结果总是相同的大小吗?这些数字对于再次把你带到正确的地点可能毫无意义。但仅供参考,您必须访问滚动条,获取其值,然后重新填充,然后再次滚动该值:
但更有用的方法是找到当前视图中或感兴趣的项,然后重新填充树,然后告诉树滚动到实际的项。那么现在项目在树中的哪个位置就不重要了(如果数据结构发生了重大变化)。在
首先按以下条件保存当前项:
^{pr2}$一旦您有了那个数据值,不管是文本值还是其他一些自定义数据值,您就可以重新填充树,然后再次查找该项。在
您可以修改它以适合您的实际项目类型。您可能正在项目上存储一些其他自定义值,以便再次找到它们。在
相关问题 更多 >
编程相关推荐