无法在QTreeView中显示.mp3文件
Failing to display .mp3 file inside QTreeView
我的.ui中有两个树视图。一个树视图是DriveView
,另一个是DriveListView
。现在我已经编写了一个代码,在"DriveView"中显示我的系统的驱动器。我做了如下:
// 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
文件。基本上检查所有的文件夹和子文件夹。一旦找到文件,它应该会将它们显示在我的另一个树视图中,即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文件的子文件夹时,它都会在树视图中显示它们。这就是我所面临的问题。单击邮件文件夹时,不会显示任何内容。理想情况下,我想显示主文件夹及其子文件夹中的所有mp3文件。我已经放置了qDebug()<<dirIt.filePath();
,当我运行应用程序并单击驱动器时,它会在应用程序输出中打印所有.mp3
文件,但不会在树视图中显示它们,即DriveListView
。
由于您无论如何都要手动迭代所有子目录,请尝试使用QStringListModel
作为m_SystemListViewModel
。通过这种方式,您可以直接在视图中显示m_list
。看见http://qt-project.org/doc/qt-4.8/qstringlistmodel.html
或者,它看起来可能会使用QSortFilterProxyModel
来过滤列表视图中显示的结果,但我从未使用过它http://qt-project.org/doc/qt-4.8/qsortfilterproxymodel.html
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 使用 Struct 进行 mp3 播放器模拟C++(不需要播放 mp3 的唯一显示列表)
- 无法在QTreeView中显示.mp3文件
- 如何在iPhone上使用LAME编码成.mp3时显示进度条
- MP3 文件长度显示不正确