2011-01-17 2 views
2

사용자가 볼 수있는 파일 형식을 하나만 설정할 수 있습니까? 설명서에서 검색 중이지만 찾을 수 없습니다 ... 그렇지 않은 경우 사용하고 싶은 다른 위젯은 무엇입니까?QTreeView에서 한 가지 유형의 파일 형식

답변

1

QTileView를 QFileSystemModel과 함께 사용한다고 가정합니다. 그렇지 않다면 그렇게 할 것을 제안합니다. QTreeWidget은 유연하지 않습니다.

QFileSystemModel에는 원하는 작업을 수행해야하는 setNameFilters이라는 메서드가 있습니다. 그것을 사용하려면 같은 것을 할 :

QStringList filters; 
filters.append("*.cc"); // whatever filters you want 
filters.append("*.h"); 

QFileSystemModel *model = new QFileSystemModel; 
model->setNameFilters(filters); 

QTreeView *view = new QTreeView; 
view->setModel(model); 
+0

감사합니다! 나는 그것을 시도했지만, 오직 C 디렉토리와 그 다음에 1 개의 하위 카탈로그를 볼 수 있었고, 그 다음에는 1 명의 grand-child가 그 것이다. 나는 다른 시간에 그것을 시험해 볼 것이지만,별로 쓸모가 없다. QFileDialog는 filesSelected() 시그널을 가지고 있기 때문에 MainWindow 내부의 위젯으로 유용하다. (목표는 파일을 선택하고 음악을 재생하는 기능에 QString을 보내는 것입니다.) 하지만 QFileDialog를 선택하면 사라집니다. 당신은 절대로 그것을 해산시키지 않는 방법을 알고 있습니까? – lvp

+0

표준 QFileDialog를 다시 작성 (하위 분류)하지 않고 닫을 수 있다고 생각하지 않습니다. 그것이 끝난 시점을 볼 수 있고 즉시 다시 보여줄 수 있습니다.하지만 아마 깜박 거릴 것입니다. QFileSystemModel에서 QItemSelectionModel을 가져와 선택 항목이 변경된시기와 선택 항목이 무엇인지 알 수 있습니다. 더 많은 작업이 될 것이지만 QFileSystemModel을 작동 시키면 결과에 더 만족할 것이라고 생각합니다. –

0
//filter treeview for directories and torrent files only 

QStringList filters; 
filters << "*.torrent"; 

QDirModel model = new QDirModel(this); 
model->setReadOnly(true); 
model->setSorting(QDir::DirsFirst |QDir::IgnoreCase | QDir::Type); 
model->setFilter(QDir::AllDirs | QDir::AllEntries |QDir::NoDotAndDotDot); 

model->setNameFilters(filters); 
ui->treeView->setModel(model); 
+0

답변에 대한 설명을 추가하십시오. – ncm

관련 문제