2016-09-13 4 views
1

FolderListModel을 사용하는 데 문제가 있습니다. 특정 디렉터리의 XML 파일 만 필터링하고 ListView에 표시하려고합니다. 문제는이 디렉토리에 XML 파일이 여러 개있는 반면 파일 하나만 표시한다는 것입니다. 다른 유형의 파일 (txt, pdf)로 시도했지만 ListView에 정확한 양의 파일을 표시하지 않습니다. 여기 내 코드가 있는데, 내가 뭘 잘못하고 있니?QtQuick - FolderListModel이 모든 파일을 표시하지 않습니다.

ListView { 
      id: listView1 
      x: 0 
      width: 288 
      height: 256 
      anchors.top: parent.top 
      anchors.topMargin: 16 
      anchors.horizontalCenter: parent.horizontalCenter 
      delegate: listviewdelegate 
      model: listviewmodel 
      clip: true; 
     } 

     FolderListModel{ 
      id:listviewmodel 
      nameFilters: ["*.xml"] 
      showDirs: false 
      showDotAndDotDot: false 
      folder:"C:/Users/bg/Documents"//serializationpath 
     } 

     Component{ 
      id:listviewdelegate 
      Text { 

       text: fileName 
       color: m_colorDefault 
       font.pixelSize: m_iFontSizeMin 
       anchors.verticalCenter: parent.verticalCenter 
      } 

     } 

ListView에서 FolderListModel을 사용할 수 없습니까? 당신의 도움에 대한 감사합니다,

감사

편집 : 나는 내 문제를 해결하기 위해 노력하고, 나는이 Qt는 문서 폴더 속성에 대한 올바르지 않은 것으로 나타났습니다. 기본적으로 URL이 유효하지 않다고 말하지만 폴더를 설정하지 않으면 응용 프로그램의 폴더가 사용됩니다. 나는 절대 경로와 폴더 속성을 설정하려고 :

FolderListModel { 
       id: listviewmodel 
       folder: "F:/QtDev/Sources.ScenarioEditor" 
      } 

을하지만 잘못된 경로에 대해 소리없이, 응용 프로그램의 폴더를 사용하여 유지합니다. 가 마침내 올바른 폴더를 대상으로 성공하지만, 지금은 nameFilters 속성의 stupide 행동에 직면하고있다 ... 여기

입니다 : 그래서

편집 2 ... 여기에 조금 혼란 스러워요 스 니펫 :

   FolderListModel { 
        id: listviewmodel 
        showDirs: false 
        //works fine and filters XML 
//     folder:"file:/F:/QtDev/Sources.ScenarioEditor" 
//     nameFilters: ["*.xml"] 
        //works fine but doesn't filter XML 
        folder:"file:/"+scenario.serializationPath 
        nameFilters: ["*.xml"] 


} 

scenario.serializationPath는 필자가 진정으로 사용해야하는 사용자 폴더를 대상으로합니다. 그러나이 경우 파일 필터링이 작동하지 않습니다./

잠시 동안이 문제에 봉착 했으므로 도움이 될 것입니다. 동적 folder 이름과 nameFilter으로 FolderListModel를 사용하는 동안

안부

답변

1

나는 비슷한 문제를 우연히 발견했다. 폴더 및/또는 필터를 업데이트하려고 시도한 다음 Component.onCompleted을 사용하여 모델에 첨부 된보기를 새로 고칩니다. 모델을 채우기 것은 비동기 작업이 될 것 같다 그리고 내가 FolderListModel count 값에보기 업데이트 트리거 해결되도록 데이터는 Component.onCompleted 호출에 의해 준비되지 않은 :

property int totalFileCount: folderListModel.count 
onTotalFileCountChanged: { 
    console.log("total files: " + totalFileCount); 
    // **** Refresh your view here **** 
} 

FolderListModel { 
    id: folderListModel 
    folder: "" // This gets updated by another function 
    nameFilters: [ "*.png" ] 
}