用Qt中的C++ QMediaplaylist写一个目录只能有四级,且只显示拥有*.mp3的文件以及含有*.mpe的文件夹
时间: 2024-02-01 15:13:18 浏览: 120
基于c++ qt实现的一个简单音乐播放器源码, 支持添加音乐目录, 调整音量
下面是一个简单的实现,目录结构限制了只能有四级,只显示包含*.mp3文件的文件和包含*.mpe文件的文件夹:
```cpp
QDir rootDir("your/root/directory");
QStringList filters;
filters << "*.mp3";
int level = 0;
QMediaPlaylist *playlist = new QMediaPlaylist();
processDirectory(rootDir, filters, level, playlist);
void processDirectory(const QDir &dir, const QStringList &filters, int level, QMediaPlaylist *playlist)
{
if (level > 4) {
return;
}
QStringList entries = dir.entryList(filters, QDir::Files);
foreach (QString entry, entries) {
QString filePath = dir.absoluteFilePath(entry);
QUrl fileUrl = QUrl::fromLocalFile(filePath);
playlist->addMedia(fileUrl);
}
QStringList subDirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
foreach (QString subDir, subDirs) {
QString subDirPath = dir.absoluteFilePath(subDir);
QDir subDirObj(subDirPath);
if (subDirObj.entryList(filters, QDir::Files).size() > 0 || level == 3) {
QUrl subDirUrl = QUrl::fromLocalFile(subDirPath);
playlist->addMedia(subDirUrl);
processDirectory(subDirObj, filters, level + 1, playlist);
}
}
}
```
首先,我们初始化一个QDir对象来指定根目录。然后,我们定义一个QStringList来过滤文件,只包含*.mp3文件。接下来,我们定义一个变量来限制目录结构只能有四级。最后,我们创建一个QMediaPlaylist对象,然后调用processDirectory函数来遍历目录并将文件和文件夹添加到播放列表中。
在processDirectory函数中,我们首先检查当前级别是否大于4,如果是,则返回。然后,我们使用entryList函数来获取当前目录下包含*.mp3文件的文件列表,并将这些文件添加到播放列表中。接下来,我们使用entryList函数获取包含*.mpe文件的子目录,并遍历这些子目录。如果子目录包含*.mp3文件或者已经到达了第四级目录,则将其添加到播放列表中,并递归调用processDirectory函数来处理该子目录。
阅读全文