当前位置: 首页 > 知识库问答 >
问题:

无法在QTreeView中显示.mp3文件

施招
2023-03-14

我的.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()< 放入,当我运行应用程序并单击驱动器时,这将在应用程序输出中为我打印所有 .mp3文件,但它不在树视图中显示它们,即 DriveListView


共有1个答案

卫成和
2023-03-14

由于您无论如何都要手动迭代所有子目录,请尝试为M_SystemListViewModel使用QStringListModel。这样,您就可以直接在视图中显示m_list。参见http://qt-project.org/doc/qt-4.8/QStringListModel.html

或者,看起来可能会使用QSortFilterProxyModel来筛选列表视图中显示的结果,但我从未使用过它。参见http://qt-project.org/doc/qt-4.8/qsortfilterproxymodel.html

 类似资料:
  • 我遵循了本教程:http://what-when-how.com/javafx-2/playing-audio-using-the-media-classes-javafx-2-part-1/ 我有相应的资源文件夹在相应的目录中。类文件,但我仍然不能播放音频。mp3文件与教程中的不同,但我也有一个. wav等效文件,发现JavaFX可以开箱播放*. wav文件,但不能播放mp3文件。怎么回事啊?

  • 标记为“good”的文件可以正确播放,而标记为“bad”的文件则不能。两个文件在同一个目录中;两个文件都使用音乐播放器播放;并且这两个文件都可以在Windows7机器上使用Python3.4和pygame。

  • 我试图使用jfree图表库生成一个圆环图或环形图。环形图已成功生成,但唯一的问题是环形内的居中文本未显示。以下是示例片段。图表生成代码 和水平居中相关的代码如下所示 我用的是jfreechart verison 1.5.0

  • 我在res目录中创建了raw文件夹,并插入了mp3文件。我试着用mediaplayer播放我的mp3文件。这是我的消息来源- 但是当我运行应用程序时,我有exception.this是我的logcat异常- 我如何解决我的问题?如果有人知道解决办法,请帮助我。提前感谢。

  • 我复活了一个CN1项目(已经发布),并尝试让它在Netbeans 11下的模拟器中运行(运行在OpenJdK 11上)。然而,该项目不断失败。 我更新了CN1谷歌地图扩展,刷新了libs,但问题仍然存在。 谷歌地图扩展版本是42。我该怎么做才能让一切都像以前一样运转? 任何帮助都很感激,

  • 我正在研究我的高中顶点。这是一个程序,用户可以从互联网下载歌曲并以有组织的方式存储它们并播放它们。我的程序必须包含一个功能,用户只需按一个按钮即可删除指定的.mp3文件。我已经在媒体播放器上尝试了.dispose()方法,然后尝试删除似乎不起作用的文件。它会产生一个错误,指出.mp3文件仍在使用中。如何阻止 Javafx 访问该文件?我在网上搜索了答案,但没有一个答案适合我的需求。如果有人能为我提