2010-12-07 8 views
3

QFileSystemModel을 이름, 작성 날짜 및 마지막으로 액세스 한 날짜 (모두 오름차순 및 내림차순)로 정렬하려고합니다. 정렬을 위해 QSortFilterProxyModel을 사용하고 있습니다. 어떻게 든 정렬 순서를 변경할 때 이상한 효과가 있습니다. 이름이 제거 될 때까지 표시되는 문자 수는 매우 다양합니다. 정렬 순서에 따라 일부 항목에는 세 개의 글자 (Pro ...)가 있지만 다른 항목에는 최대 10 개 (Programms)가 있습니다. 뷰 크기에 영향을주지 않는 아이콘 크기를 변경하면서 뷰 크기를 충분히 크게 설정했습니다 (100x100).QListView는 모델의 정렬 순서에 따라 다른 크기의 항목을 표시합니다.

QFileSystemModel을 직접 정렬하면 모든 것이 올바르게 작동하지만 파일 이름이 아닌 다른 측면으로 정렬 할 수 없습니다.

QSortFilterProxyModel이 텍스트를 삭제하는 방식은 어디에서 변경할 수 있습니까? 내 프록시가보기에 전혀 영향을주지 않는 이유는 무엇입니까? QFileSystemModel에 대한 추가 정보는 어디에서 찾을 수 있습니까? 나는 아직도 다른 열 (# 1은 파일 이름)에 어떤 데이터가 저장되어 있는지 알지 못합니다.

스크린 샷 :

alt text

당신이 볼 수 있듯이, SORTORDER에 따라 파일 이름이 생략하거나하지 않습니다 얻을. im이 내림차순으로 정렬하는 경우, "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

@Pie_Jesu 업데이트 된 나의 질문 – atamanroman

답변

1

QListView에 아이콘을 칠하는 ItemDelegate 어딘가에 문제가 있습니다. 나는 그것을 하위 클래스로 만들었고, 엘딩과 페인팅을 처리했고 이제는 모든 것이 제대로 작동합니다. 나는이 사실을 조사하고 내가 할 수있는 한 빨리 설명을 게시 할 것이다.

관련 문제