2010-12-07 76 views
3

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

如果我直接对QFileSystemModel进行排序,一切正常,但我无法通过文件名以外的其他方面进行排序。

我在哪里可以改变行为如何QSortFilterProxyModel elides文本?为什么我的代理完全影响视图?我在哪里可以找到有关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

请显示一些截图。并且代码也是。也许更多的信息会帮助我们理解你。 – 2010-12-11 14:03:35

回答

1

问题出在ItemDelegate的某处,它将图标绘制到QListView上。我把它分类了,处理了自己的画,并且现在一切都按照它应该的那样工作。我会调查这个问题,并尽快(如果)我可以发布详细说明。

相关问题