我是 Qt 的新手,从过去几天开始就开始研究它。我遇到了一种情况,我需要解析/遍历我的系统目录并搜索 .mp3、.mpg 等文件。
好吧,在我的 .ui 中,我有 2 个树视图,一个向右,另一个向左。左侧显示系统目录,在选择驱动器时,右侧树视图显示 .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;
当我运行我的应用程序时,它只显示驱动器中存在的那些音频/视频文件。我的意思是它不会解析驱动器中存在音频/视频文件的文件夹。它只显示驱动器中的文件,而不是子目录。我怎样才能实现它?:)