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

Qt QListView根据模型的排序顺序显示不同大小的项目,qt,qt4,Qt,Qt4,我试图按名称、创建日期和上次访问日期对QFileSystemModel进行排序(都是升序和降序)。我正在使用QSortFilterProxy模型进行排序。不知何故,更改排序顺序时会产生一种奇怪的效果:在删除名称之前显示的字符数变化很大。根据排序顺序,某些项目只有三个字母(Pro…),而其他项目最多有十个字母(程序)。我已经设置了足够大的视图网格大小(100x100),更改图标大小不会影响视图 如果我直接对QFileSystemModel进行排序,一切正常,但我不能按文件名以外的其他方面进行排序

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

如果我直接对QFileSystemModel进行排序,一切正常,但我不能按文件名以外的其他方面进行排序

在哪里可以更改QSortFilterProxyModel删除文本的方式?为什么我的代理会影响视图?在哪里可以找到关于QFileSystemModel的更多信息?我仍然不知道其他列中存储了什么数据(#1是文件名)

屏幕截图:

// 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);
}

正如您所看到的,根据排序器的不同,文件名会被省略,或者不会。如果按降序排序,则其“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);
}

提前谢谢

问题出在
itemdegate
的某个地方,它将图标绘制到
QListView
上。我对它进行了子分类,自己处理了删除和绘画,现在一切都正常了。我将对此进行进一步调查,并尽快(如果可能)发布详细说明。

请显示一些屏幕截图。还有代码。也许更多的信息会帮助我们理解你。@Pie_Jesu更新了我的问题