首页 > 解决方案 > 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)"));

我怎样才能改变它来解决我的问题?第二个问题是我得到完整的目录名和歌曲名,我只想得到歌曲名。

我会很高兴得到任何帮助。

标签: c++qt

解决方案


使用 getOpenFileNames() 代替 getOpenFileName()


推荐阅读