Qtlistview scrollto定位指定的项目和LayoutMode布局的简单用法
工作中没有小事:点石成金,滴水成河,只有认真对待自己所做的一切事情,才能克服万难,取得成功。
这个项目的发展出现了问题。我们使用Qt的QListView来加载目录,显示文件夹和文件信息,并希望在加载目录时定位特定的项目。幸运的是,当数据很少时,当前视口可以显示所有数据。当有更多数据时,当前视口不会完全显示。如果我们碰巧选择了不在当前视口中的项目,我们希望在当前视口中显示当前选定的项目,因此我们必须手动滑动滚动条。
QListView是从QAbstractItemView派生的,它有一个scrollTo函数来确保指定的项在当前视口中可见:
常数值描述
QAbstractItemView:EnsureVisible确保可见0滚动以确保该项可见。
qabstraintitemview : positionattop 1滚动以将项目定位在视口的顶部。
QAbstractItemView:PositionAtBottom位置底部2滚动以将项目定位在视口底部。
QAbstractItemView:PositionAtCenter位置中心3滚动以将项目定位在视口的中心。
void qabstraditemview:3360 croll to(const QModelIndex index,qabstraditemview33603360 croll hint=EnsureVisible);
这将解决问题。
补充: Qlistview的布局有时会影响这个函数的结果,setlayoutode(Qlistview :3360布局模式),它有两个值:Batched和SinglePass。默认值为单遍。
1.当批处理时,您可以在批处理项目的同时处理事件,这样您就可以即时查看可见项目并与之交互,而其他项目则不居中。在这种模式下,每个批处理项目的默认值为100,可以通过函数setBatchSiz进行修改。
如果在有大量数据时选择此选项,类似于分页显示,此时您可能无法在scrollTo中找到您想要的结果。
2.SinglePass模式,项目一次排列,可以保证滚动条的准确性,但会牺牲性能。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/84600.html