文件管理器的音频持续时间

时间:2019-06-23 18:46:47

标签: c++ qt

我尝试不使用phonon来获取文件管理器的音频数据(持续时间)。只能写入一个文件。但是,在控制台中,我从目录获取所有持续时间。

这是我试图获取数据的代码部分。如何获取目录中所有文件的数据?

void MainWindow::CreateTable(const QString & p) {
filemodel->removeRows( 0, filemodel->rowCount() );


filemodelcurrentdir = QDir(p).path();
files = QDir(p).entryInfoList(QDir::Dirs | QDir::Files | 
QDir::NoDotAndDotDot);
foreach(const QFileInfo &fi, files) {
QString name = QString("%0").arg(fi.fileName());
filemodel->insertRow(0);
if (fi.isDir()) {
    filemodel->setData(filemodel->index(0, 0), name);
    filemodel->setData(filemodel->index(0, 0), dirIcon, 
Qt::DecorationRole);
} else {
    filemodel->setData(filemodel->index(0, 0), name);
    filemodel->setData(filemodel->index(0, 0), fileIcon, 
Qt::DecorationRole);
    }
filemodel->setData(filemodel->index(0, 1), size_human(fi.size()));

QMediaPlayer *播放器=新的QMediaPlayer();

player->setMedia(QUrl::fromLocalFile(filemodelcurrentdir + "/" + name));

double dura;

connect(player, &QMediaPlayer::durationChanged, this, [&](qint64 dur) {
    dura = static_cast<double>(dur)/60000.0;
          qDebug() << "duration = " << dura;
});


filemodel->setData(filemodel->index(0, 2), QString().setNum(dura));


}


filemodel->setHeaderData(0,Qt::Horizontal,QObject::tr("Name" ));
filemodel->setHeaderData(1,Qt::Horizontal,QObject::tr("Size" ));
filemodel->setHeaderData(2,Qt::Horizontal,QObject::tr("Duration" ));

pTreeView2->setSortingEnabled(true);
pTreeView2->setColumnWidth(0, 300);
pTreeView2->setColumnWidth(1, 100);
pTreeView2->setColumnWidth(2, 100);
}

非常感谢您

0 个答案:

没有答案