Qt QListView根据模型的排序顺序显示不同大小的项目
我试图按名称、创建日期和上次访问日期对QFileSystemModel进行排序(都是升序和降序)。我正在使用QSortFilterProxy模型进行排序。不知何故,更改排序顺序时会产生一种奇怪的效果:在删除名称之前显示的字符数变化很大。根据排序顺序,某些项目只有三个字母(Pro…),而其他项目最多有十个字母(程序)。我已经设置了足够大的视图网格大小(100x100),更改图标大小不会影响视图 如果我直接对QFileSystemModel进行排序,一切正常,但我不能按文件名以外的其他方面进行排序 在哪里可以更改QSortFilterProxyModel删除文本的方式?为什么我的代理会影响视图?在哪里可以找到关于QFileSystemModel的更多信息?我仍然不知道其他列中存储了什么数据(#1是文件名) 屏幕截图:Qt QListView根据模型的排序顺序显示不同大小的项目,qt,qt4,Qt,Qt4,我试图按名称、创建日期和上次访问日期对QFileSystemModel进行排序(都是升序和降序)。我正在使用QSortFilterProxy模型进行排序。不知何故,更改排序顺序时会产生一种奇怪的效果:在删除名称之前显示的字符数变化很大。根据排序顺序,某些项目只有三个字母(Pro…),而其他项目最多有十个字母(程序)。我已经设置了足够大的视图网格大小(100x100),更改图标大小不会影响视图 如果我直接对QFileSystemModel进行排序,一切正常,但我不能按文件名以外的其他方面进行排序
// 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更新了我的问题