我尝试按名称,创建日期和上次访问日期(所有升序和降序)对QFileSystemModel进行排序。我使用QSortFilterProxyModel进行排序。不知何故,在更改排序顺序时会产生一种奇怪的效果:在名称被删除之前显示的字符数变化很大。根据排序顺序,某些项目只有三个字母(Pro ...),而其他项目最多有十个(Programms)。我已经将视图网格大小设置得足够大(100x100),更改图标大小不会影响视图。
如果我直接对QFileSystemModel进行排序,一切正常,但我不能通过文件名等其他方面进行排序。
我在哪里可以更改QSortFilterProxyModel如何删除文本的行为?为什么我的代理会影响视图?我在哪里可以找到有关QFileSystemModel的任何进一步信息?我仍然不知道其他列中存储了哪些数据(#1是文件名)。
截图:
正如您所看到的,根据排序顺序,文件名会被删除,或者它们不会被删除。如果我正在排序降序,它的“twai ...”,如果我排序升序其“twain.dll”。
这是我单击排序箭头时执行的代码:
// initialization
fileNameSortModel = new QSortFilterProxyModel(parent);
fileNameSortModel.sourceModel(originalModel); // originalModel is type of QFileSystemModel
// ...
void PFileListWithHeader::onNameSort(Qt::SortOrder order)
{
currentModel = fileNameSortModel;
view->setModel(currentModel);
view->setRootIndex(translateOriginalIndexToProxy(originalModel->index(path)));
currentModel->sort(0, order);
}
提前致谢!
答案 0 :(得分:1)
问题出在ItemDelegate
的某处,它将图标绘制到QListView
上。我将其分类,处理了自己的绘画和绘画,现在一切正常。我将调查此更新并尽快(如果)我可以发布详细描述。