.MP3文件,我在我的.ui 2個樹視圖。一棵樹視圖是DriveView
,另一棵是DriveListView
。現在我已經編寫了一個代碼,在DriveView中顯示我的系統的驅動器。我已經做如下它:沒有展示的內部QTreeView則
// Gets called when application starts
void DetailView::onCamStartup()
{
m_SystemModel = new QFileSystemModel(this);
m_SystemListViewModel = new QFileSystemModel(this);
m_SystemModel->setRootPath(QDir::currentPath());
ui->DriveView->setModel(m_SystemModel);
ui->DriveListView->setModel(m_SystemListViewModel);
// regard less how many columns you can do this using for:
for(int nCount = 1; nCount < m_SystemModel->columnCount(); nCount++)
ui->DriveView->hideColumn(nCount);
}
現在,一旦我點擊我的DriveView
特定驅動它讓我看到裏面的子文件夾。我基本上需要做的是迭代/遍歷整個驅動器,並在裏面搜索.mp3
文件。基本上檢查它的所有文件夾和子文件夾。一旦它找到文件,它應該顯示在我的另一個Treeview,即DriveListView
。我已經爲它編寫了以下代碼:
void DetailView::on_DriveView_clicked(const QModelIndex &index)
{
QString sPath = m_SystemModel->fileInfo(index).absoluteFilePath();
ui->DriveListView->setRootIndex(m_SystemListViewModel->setRootPath(sPath));
m_SystemModel->setRootPath(QDir::currentPath());
m_SystemModel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
m_SystemListViewModel->setFilter(QDir::Files | QDir::NoDotAndDotDot);
QStringList m_list;
QDirIterator dirIt(sPath,QDirIterator::Subdirectories);
while (dirIt.hasNext())
{
dirIt.next();
if (QFileInfo(dirIt.filePath()).isFile())
{
if (QFileInfo(dirIt.filePath()).suffix() == "mp3")
{
qDebug()<<dirIt.filePath();
m_list<<dirIt.filePath();
m_list.append(dirIt.filePath());
}
}
QStringListModel *model = new QStringListModel();
model->setStringList(m_list);
m_SystemListViewModel->setNameFilterDisables(false);
}
}
每當我點擊具有mp3文件的子文件夾時,它都會在treeview中顯示它們。這是我面臨的問題。當我點擊郵件文件夾時,什麼都不顯示。理想情況下,我想顯示主文件夾及其子文件夾中顯示的所有mp3文件。我已經把qDebug()<<dirIt.filePath();
,當我運行應用程序,並單擊驅動器,這種打印我的所有應用程序中輸出的文件.mp3
,但它並不在TreeView即DriveListView
顯示它們。
重複。 http://stackoverflow.com/questions/13473689/fails-to-display-mp3-files-in-treeview-in-qt – troyane
哪些錯誤您剛纔的問題,所以你必須編寫新的? –
@troyane:仍然沒有找到合適的答案。我將不勝感激,如果你能幫助 –