|
10Qter豆
自定义了一个ListModel继承自QAbstractListModel,自己实现了排序功能,排序代码如下
- emit layoutAboutToBeChanged();
- QList < QPair<PTalkNode, int> > sorting;
- for (int i = 0; i < mNodeList.count(); ++i)
- {
- PTalkNode item = mNodeList.at(i);
- sorting.append(QPair<PTalkNode, int>(item, i));
- }
- qSort(sorting.begin(), sorting.end(), lessThan);
- QModelIndexList fromIndexes;
- QModelIndexList toIndexes;
- for (int r = 0; r < sorting.count(); ++r)
- {
- PTalkNode item = sorting.at(r).first;
- toIndexes.append(createIndex(r, 0, item));
- fromIndexes.append(createIndex(sorting.at(r).second, 0, sorting.at(r).first));
- mNodeList[r] = sorting.at(r).first;
- }
- changePersistentIndexList(fromIndexes, toIndexes);
- emit layoutChanged();
复制代码
我的问题是排完序后QListView的当前选中的效果没有跟着改变,如我原来选中的是第二项,排完序后变为第一项,选中的效果还是在第二项上没有变为第一项,
是不是我这个排序里还缺什么
|
|