2013-05-08 52 views
1

我在QML中爲Ubuntu Touch創建了一個音樂播放器,並且我有些事情我會很感激,因爲我是QML的新手。Recursevly去低谷在FolderListModel(QML)的授權地圖

該應用程序能夠播放選定目錄中列出的曲目,但該目錄還顯示文件夾,我希望列出所有子分區中的所有文件,而不僅僅是根目錄中的曲目。

但我真的不知道該怎麼做。 FolderListModel是一個isFolder方法,可能可以使用,但我不知道如何。或者使用某種功能去選擇導演。

我來自此線程qml FolderListModel但它沒有給我任何東西。

這是目前列出了我的曲目代碼:

  Column { 
       anchors.centerIn: parent 
       anchors.fill: parent 
       ListView { 
        id: musicFolder 
        FolderListModel { 
         id: folderModel 
         folder: musicDir 
         nameFilters: ["*.ogg","*.mp3","*.oga","*.wav"] 
        } 
        width: parent.width 
        height: parent.height 
        model: folderModel 
        delegate: ListItem.Subtitled { 
         text: fileName 
         subText: "Artist: " 
         onClicked: { 
          console.debug('Debug: User pressed '+musicDir+fileName) 
          playMusic.source = musicDir+fileName 
          playMusic.play() 
         } 
        } 
       } 
      } 

回答

0

你需要它循環展平了嵌套項目的代理模式。這種代理模式的一個例子是KDescendantsProxyModel(我也是using it)。

或者,您可以通過遞歸地遍歷文件系統(或讓一些現有的類爲您完成此操作)並將結果提供給其他更簡單的模型來構建匹配特定模式的文件列表。這將有一個不能輕鬆顯示更新的缺點。

+0

謝謝。我會嘗試創建一個數組,然後打印出來。 – 2013-05-08 15:29:54