使用QML从委派文件中获取元数据

时间:2013-05-08 13:05:17

标签: file qt metadata qml

我正在使用QML为Ubuntu Touch创建一个音乐播放器,因为我是QML的新手,所以我会感谢一些帮助。

我有一个目录中的曲目列表,但我想显示元数据(艺术家,曲目名称,年份,专辑等)而不是文件名。

使用Qt.Multimedia能够从当前正在播放的曲目中获取元数据,但是我找不到如何从我的FolderListModel委托文件中为每个文件执行此操作。

我该怎么做?

这是当前的代码:

            Column {
                anchors.centerIn: parent
                anchors.fill: parent
                ListView {
                    id: musicFolder
                    FolderListModel {
                        id: folderModel
                        folder: musicDir
                        showDirs: false
                        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()
                            trackInfo.text = playMusic.metaData.albumArtist+" - "+playMusic.metaData.title // show track meta data
                        }
                    }
                }
            }

2 个答案:

答案 0 :(得分:0)

这里最简单的事情似乎是获得一个C ++库,它可以解析这些文件中的元数据并使用它在C ++中创建一个自定义ListModel,将这些信息填充到自身。不幸的是,这必须在C ++中完成,因为javascript没有读取和解析文件的IO功能。

答案 1 :(得分:0)

实际上我认为我可以继续使用QtMultimedia,但将数据保存在本地数据库中。启动时,它会检查音乐目录并添加/删除曲目。这样,它首次启动时只会很慢(希望如此)