QListView根据模型的排序顺序显示不同大小的项目

时间:2010-12-07 15:45:41

标签: qt qt4

我尝试按名称,创建日期和上次访问日期(所有升序和降序)对QFileSystemModel进行排序。我使用QSortFilterProxyModel进行排序。不知何故,在更改排序顺序时会产生一种奇怪的效果:在名称被删除之前显示的字符数变化很大。根据排序顺序,某些项目只有三个字母(Pro ...),而其他项目最多有十个(Programms)。我已经将视图网格大小设置得足够大(100x100),更改图标大小不会影响视图。

如果我直接对QFileSystemModel进行排序,一切正常,但我不能通过文件名等其他方面进行排序。

我在哪里可以更改QSortFilterProxyModel如何删除文本的行为?为什么我的代理会影响视图?我在哪里可以找到有关QFileSystemModel的任何进一步信息?我仍然不知道其他列中存储了哪些数据(#1是文件名)。

截图:

alt text

正如您所看到的,根据排序顺序,文件名会被删除,或者它们不会被删除。如果我正在排序降序,它的“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);
}

提前致谢!

1 个答案:

答案 0 :(得分:1)

问题出在ItemDelegate的某处,它将图标绘制到QListView上。我将其分类,处理了自己的绘画和绘画,现在一切正常。我将调查此更新并尽快(如果)我可以发布详细描述。