Не удается разобрать системные каталоги с использованием QFileSystemModel для разных аудио / видео файлов

Я новичок в Qt и начал работать над этим с последних дней. Я столкнулся с ситуацией, когда мне нужно проанализировать / перебрать мои системные каталоги и найти файлы, такие как .mp3, .mpg и т. Д.

Ну, в моем .ui у меня есть 2 Tree Views, один направо, другой налево. В левой части отображаются системные каталоги, а при выборе диска в правой части дерева отображаются файлы .mp3, .mpg и т. Д.

Вот мой класс Cpp:

    //Gets called on App startup
void PanasonicViewer::onCamStartup()
{
m_SystemModel = new QFileSystemModel(this);
m_SystemListViewModel = new QFileSystemModel(this);
m_SystemModel->setRootPath(QDir::homePath());
ui->DriveView->setModel(m_SystemModel); //Left side TreeView
ui->DriveListView->setModel(m_SystemListViewModel); //Right Side TreeView

// regard less how many columns you can do this using for:
for(int nCount = 1; nCount < m_SystemModel->columnCount(); nCount++)
ui->DriveView->hideColumn(nCount);
}

void PanasonicViewer::on_DriveView_clicked(const QModelIndex &index)
{
QStringList sDriveFilters;

QString sPath = m_SystemModel->fileInfo(index).absoluteFilePath();
ui->DriveListView->setRootIndex(m_SystemListViewModel->setRootPath(sPath));

m_SystemModel->setRootPath(QDir::homePath());
m_SystemModel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs );
m_SystemListViewModel->setFilter( QDir::Files | QDir::NoDotAndDotDot );

sDriveFilters << "*.aac" << "*.wmv" << "*.avi" << "*.mpeg" << "*.mov" << "*.3gp" << "*.flv" << "*.mp3" ;

m_SystemListViewModel->setNameFilters(sDriveFilters);
m_SystemListViewModel->setNameFilterDisables(false);
}

Here is my .h file:

QFileSystemModel *m_SystemModel;
QFileSystemModel *m_SystemListViewModel;

Когда я запускаю свое приложение, оно отображает только те аудио / видео файлы, которые присутствуют на диске. Я имею в виду, что он не анализирует папки, имеющиеся на диске, где присутствуют аудио / видео файлы. Он просто отображает файлы, которые находятся на диске, а не подкаталоги. Как я могу этого достичь? 🙂

0

Решение

«Компьютер делает то, что ты сказал, но не хочешь»

Если вы хотите, чтобы все файлы присутствовали на диске — вы должны рекурсивно пройти через все ваши каталоги.

Вот похожий и отвеченный вопрос: ТАК вопрос.

По одному из ответов, в Qt вы можете использовать этот подход:

#include <qapplication.h>
#include <qdir.h>
#include <iostream>

int main( int argc, char **argv )
{
QApplication a( argc, argv );
QDir currentDir = QDir::current();

currentDir.setFilter( QDir::Dirs );
QStringList entries = currentDir.entryList();
for( QStringList::ConstIterator entry=entries.begin(); entry!=entries.end(); ++entry)
{
std::cout << *entry << std::endl;
}
return 0;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]