c++ - QT 中带有 QMediaPlaylist 的播放列表
问题描述
我用 QT 编写的播放列表有问题。
我有我的小功能来加载 mp3 文件并使用以下代码在我的播放列表中打印这首歌的名称:
void MainWindow::on_addButton_clicked()
{
QString files = QFileDialog::getOpenFileName(this, tr("Open Files"), "QString()", tr("Audio Files (*.mp3)"));
qDebug() << player->errorString();
player->setMedia(QUrl::fromLocalFile(files));
player->setVolume(ui->volumeSlider->value());
on_playButton_clicked();
foreach (QString filePath, files) {
QList<QStandardItem*> items;
items.append(new QStandardItem(QDir(filePath).dirName()));
items.append(new QStandardItem(filePath));
playListModel->appendRow(items);
playlist->addMedia(QUrl(filePath));
}
}
使用此代码,我有一个问题,即我的播放列表在 1 行中仅包含 1 个字母。当我将 QString 更改为 QStringList (这会起作用)时,我收到一个错误:
error: conversion from ‘QString’ to non-scalar type ‘QStringList’ requested
QStringList files = QFileDialog::getOpenFileName(this, tr("Open Files"), "QString()", tr("Audio Files (*.mp3)"));
我怎样才能改变它来解决我的问题?第二个问题是我得到完整的目录名和歌曲名,我只想得到歌曲名。
我会很高兴得到任何帮助。
解决方案
使用 getOpenFileNames() 代替 getOpenFileName()
推荐阅读
- r - 指定该模型进行 logit 转换以绘制反向转换趋势
- talend - 编码“UTF8”的无效字节序列 - Talend
- android - 如何只为我的 android 应用创建一次使用闪屏
- rust - Rust:将路径引入范围时使用“self”
- google-cloud-platform - 关闭 Google Cloud Memorystore?
- python - 模块“Crypto.publickey”没有属性 RSA
- javascript - React API fetch 返回一个空对象
- javascript - 根据点击的标签显示动态内容
- java - 找不到包导致编译失败
- entity-framework-core - 调用一个存储过程返回一个没有 DbSet 的数据集