2010-12-07 77 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上。我把它分類了,處理了自己的畫,並且現在一切都按照它應該的那樣工作。我會調查這個問題,並儘快(如果)我可以發佈詳細說明。

相關問題