我尝试不使用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);
}
非常感谢您