qt5.0を使用しています。dll を作成し、すべてのオーディオ ファイルを dll 内に配置しました。現在、リソースからファイルを作成して再生しています。それはうまくいっています。
しかし問題は、ファイルを再生した後、そのファイルを削除して新しいファイルを再作成できないことです。
手動で削除しようとすると、エラーが発生します。「そのファイルを使用している他のプログラム」。プログラムを停止すると、ファイルのみを削除できます。
即時再生後にファイルを削除する方法。ここに私のコード
player = new QMediaPlayer;
connect(player,SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),this,SLOT(mediaStatusChanged(QMediaPlayer::MediaStatus)));
QFile file2(QDir::tempPath() + "/temp0.mp3");
if (file2.open(QIODevice::ReadWrite))
{
QFile workFile(":/AUDIO/" + fn +".mp3");
if(workFile.open(QIODevice::ReadOnly))
{
file2.write(workFile.readAll());
workFile.close();
}
file2.close();
}
player->setMedia(QMediaContent(QUrl::fromLocalFile(QDir::tempPath() + "/temp0.mp3")));
player->setVolume(100);
player->play();
void Audio::mediaStatusChanged(QMediaPlayer::MediaStatus state)
{
if(state==QMediaPlayer::EndOfMedia)
{
QFile::remove(QDir::tempPath() + "/temp0.mp3");
qDebug()<<"Audio played";
}
}
「オーディオが再生されました」というメッセージが表示されますが、ファイルは削除されません。
この問題を解決するのを手伝ってください。