标题:关于QTableView实时刷新和点击表头排序时,选中行出现不稳定的情况
作者:lwei24
日期:2021-10-08 17:39
内容:
如题,各位大佬,在QTableView开发中,我通过QTableView派生出一个子类,然后再自定义自己的模型,并在模型里重写sort方法,实现排序的功能。在QTableView构造函数里,开启定时器,每三秒定时刷新QTableView表格数据,再快速点击表头进行排序时,选中行可能会因为排序或实时刷新的问题,出现错乱或不准的现象,导致在选中行单击右键的时候,出现了删除操作有误,请问各位大佬,有什么办法,避免它在排序时去选中行导致右键菜单操作出现错误,或如何判断排序完成后,再选中行的右键菜单操作?
在线等,欢迎各位大佬指点一下,小弟在此不胜感激!
#1 [maxlogo 10-08 22:10]
tableview有两个model,一是source model,一是proxy model (sort model?),所以要做好这两个的映射关系
#2 回 maxlogo 的帖子 [lwei24 10-09 08:47]
maxlogo:tableview有两个model,一是source model,一是proxy model (sort model?),所以要做好这两个的映射关系 (2021-10-08 22:10)
现在不是有两个model,是我通过QAbstractTableModel派生出自定义的model,然后在这个model里重写sort排序功能,由于QTableView的派生类里添加了定时器,然后在快速排序时,立刻点击右键菜单进行删除操作,就有可能会出现选中行不稳定(还在排序或刷新时)最终导致了误删。比如,我快速点击某列的表头排序,然后立即点击某行右键删除,原本选中行是2,删除的应该是2,但可能因为快速排序没有完成或正在刷新,导致了删除的不是2.
#3 回 lwei24 的帖子 [gnibuoz 10-09 09:29]
lwei24:现在不是有两个model,是我通过QAbstractTableModel派生出自定义的model,然后在这个model里重写sort排序功能,由于QTableView的派生类里添加了定时器,然后在快速排序时,立刻点击右键菜单进行删除操作,就有可能会出现选中行不稳定(还在排序或刷新时)最终导致了误删。比如, .. (2021-10-09 08:47)
所以你的问题在于不应该用行号进行删除,而是应该用一个与行号无关(排序无关)的每一行唯一的值(如ID)进行删除的操作
#4 [maxlogo 10-09 10:27]
https://waleon.blog.csdn.net/article/details/50969661
#5 回 gnibuoz 的帖子 [lwei24 10-09 17:20]
gnibuoz:所以你的问题在于不应该用行号进行删除,而是应该用一个与行号无关(排序无关)的每一行唯一的值(如ID)进行删除的操作 (2021-10-09 09:29)
你想错了,我的目的就是想要在刷新或排序时能够准确删除指定行。