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 
      } 

     } 

Нельзя использовать FolderListModel внутри ListView? Спасибо за вашу помощь,

С уважением

Edit: Как я пытаюсь решить мою проблему, я заметил, что в документации Qt не является правильной для свойства папки. Он говорит, что по умолчанию это недопустимый URL, но если я не устанавливаю папку, он использует папку приложения. Я попытался установить свойство папки с абсолютным путем:

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

Но он держит папку с помощью приложения, не крича о неправильном пути. Поэтому я немного запутался здесь ...

Edit 2: я, наконец, удалось нацеливание на нужную папку, но теперь я столкнулся с поведением stupide собственности nameFilters ...

Вот сниппет:

   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 цели моей папки пользователя, которая является один я действительно нужно использовать. Но в этом случае фильтрация файлов не работает:/

Любая помощь будет высоко оценена, так как я застрял на этой проблеме некоторое время.

С уважением

ответ

1

я наткнулся на аналогичный вопрос, пытаясь использовать FolderListModel с динамическим folder именем и nameFilter. Я пытался обновить папку и/или фильтр, а затем обновить представление, прикрепленное к модели, с помощью Component.onCompleted. Наполнение модель, кажется, асинхронная операция и данные не готовы к Component.onCompleted аукнется, так как обходной путь я вызвал обновление вида на величину FolderListModel count:

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" ] 
}