2013-05-08 16 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