找回密码
 立即注册
收起左侧

自定义ListModel排完序后QListView的当前选中的效果没有改变

5
回复
7807
查看
[复制链接]
累计签到:882 天
连续签到:3 天
来源: 2018-5-24 14:01:14 显示全部楼层 |阅读模式
10Qter豆
自定义了一个ListModel继承自QAbstractListModel,自己实现了排序功能,排序代码如下
  1.     emit layoutAboutToBeChanged();

  2.     QList < QPair<PTalkNode, int> > sorting;
  3.     for (int i = 0; i < mNodeList.count(); ++i)
  4.     {
  5.         PTalkNode item = mNodeList.at(i);
  6.         sorting.append(QPair<PTalkNode, int>(item, i));
  7.     }

  8.     qSort(sorting.begin(), sorting.end(), lessThan);

  9.     QModelIndexList fromIndexes;
  10.     QModelIndexList toIndexes;
  11.     for (int r = 0; r < sorting.count(); ++r)
  12.     {
  13.         PTalkNode item = sorting.at(r).first;
  14.         toIndexes.append(createIndex(r, 0, item));
  15.         fromIndexes.append(createIndex(sorting.at(r).second, 0, sorting.at(r).first));
  16.         mNodeList[r] = sorting.at(r).first;
  17.     }
  18.     changePersistentIndexList(fromIndexes, toIndexes);

  19.     emit layoutChanged();
复制代码

我的问题是排完序后QListView的当前选中的效果没有跟着改变,如我原来选中的是第二项,排完序后变为第一项,选中的效果还是在第二项上没有变为第一项,
是不是我这个排序里还缺什么

回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-5-24 17:40:25 显示全部楼层
请问是高亮效果和 index 对不上嘛?

点评

鼠标选中的效果 也就是QListView的currentIndex没有改变  详情 回复 发表于 2018-5-25 09:09
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2018-5-25 09:09:46 显示全部楼层
Since 发表于 2018-5-24 17:40
请问是高亮效果和 index 对不上嘛?

鼠标选中的效果 也就是QListView的currentIndex没有改变
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-5-26 09:02:06 显示全部楼层
这个 currentIndex 的值在排序 model 的过程中是不会自动改变的,可能需要手动去修改,Qt 很可能没有实现这个功能,你记下排序之前的数据,然后 find,然后重新定义 currentIndex 吧,这样应该是可以的~

点评

看了QListWidget的排序也没有什么其他的代码 我这个也是仿照源码写的,它的就可以,我没看到有其它的的操作  详情 回复 发表于 2018-5-26 09:39
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2018-5-26 09:39:19 显示全部楼层
Since 发表于 2018-5-26 09:02
这个 currentIndex 的值在排序 model 的过程中是不会自动改变的,可能需要手动去修改,Qt 很可能没有实现这 ...

看了QListWidget的排序也没有什么其他的代码 我这个也是仿照源码写的,它的就可以,我没看到有其它的的操作

点评

哦,酱紫啊~  详情 回复 发表于 2018-5-26 17:51
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-5-26 17:51:07 显示全部楼层
一叶知秋 发表于 2018-5-26 09:39
看了QListWidget的排序也没有什么其他的代码 我这个也是仿照源码写的,它的就可以,我没看到有其它的的操 ...

哦,酱紫啊~                                                                    
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了