здесь мой код:
Код: Выделить всё
mainwindow.cpp#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include "audio_loader.h"
#include
#include "edit.h"
#include
#include
#include
#include
#include
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
player.setAudioOutput(&audioOutput);
loadAudioList();
connect(&player, &QMediaPlayer::errorOccurred, this, [this]() {
qDebug() setText("Erreur de lecture");
QMessageBox::warning(this, "Erreur", player.errorString());
});
connect(&player, &QMediaPlayer::durationChanged, this, [this](qint64 duration) {
ui->horizontalSlider->setRange(0, duration);
});
connect(&player, &QMediaPlayer::positionChanged, this, [this](qint64 position) {
if (!ui->horizontalSlider->isSliderDown())
ui->horizontalSlider->setValue(position);
});
connect(ui->horizontalSlider, &QSlider::sliderMoved, &player, &QMediaPlayer::setPosition);
}
MainWindow::~MainWindow()
{
delete ui;
}
// Modify on_listWidget_currentRowChanged
void MainWindow::on_listWidget_currentRowChanged(int currentRow)
{
if (currentRow >= 0 && currentRow < m_audioFiles.size()) {
QUrl fileUrl = QUrl::fromLocalFile(m_audioFiles[currentRow]);
player.setSource(QUrl(fileUrl));
player.play();
player.setPosition(0);
player.setPosition(2);
}
}
void MainWindow::on_PlayButton_clicked()
{
if (ui->listWidget->currentRow() >= 0) {
if (player.playbackState() == QMediaPlayer::PlayingState) {
player.pause();
ui->PlayButton->setIcon(QIcon::fromTheme("media-playback-start"));
} else if (player.mediaStatus() == QMediaPlayer::LoadedMedia ||
player.mediaStatus() == QMediaPlayer::BufferedMedia) {
player.play();
ui->PlayButton->setIcon(QIcon::fromTheme("media-playback-pause"));
ui->label->setText("Lecture en cours: " + ui->listWidget->currentItem()->text());
}
}
}
void MainWindow::on_StopButton_clicked()
{
player.stop();
ui->label->setText("Pas de média sélectionné");
ui->PlayButton->setIcon(QIcon::fromTheme("media-playback-start"));
ui->horizontalSlider->setValue(0);
}
void MainWindow::on_PrevButton_clicked()
{
int currentRow = ui->listWidget->currentRow();
if (currentRow > 0) {
ui->listWidget->setCurrentRow(currentRow - 1);
}
}
void MainWindow::on_NextButton_clicked()
{
int currentRow = ui->listWidget->currentRow();
if (currentRow < ui->listWidget->count() - 1) {
ui->listWidget->setCurrentRow(currentRow + 1);
}
}
void MainWindow::on_actionQuitter_triggered()
{
QApplication::quit();
}
void MainWindow::on_actionModifier_la_playlist_triggered()
{
Edit *editWindow = new Edit("data.csv");
connect(editWindow, &Edit::dataSaved, this, &MainWindow::reloadData); // Connecter le signal au slot
editWindow->show();
}
void MainWindow::loadAudioList()
{
ui->listWidget->clear();
m_audioFiles.clear();
QString filename = "data.csv";
QFile file(filename);
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::warning(this, "Erreur", "Impossible de lire le fichier.");
return;
}
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
QStringList values = line.split(',');
if (values.size() >= 2) {
ui->listWidget->addItem(values[0]);
QString audioFilePath = values[1].remove('"').trimmed();
m_audioFiles.append("Musics/" + audioFilePath);
}
}
file.close();
}
void MainWindow::reloadData()
{
loadAudioList();
}
< /code>
Я искал в Интернете, но я ничего не нашел.
Я запускаю Windows 11 на ноутбуке HP и использую создатель QT. < /p>
Заранее спасибо за ответ. < /p>
Подробнее здесь: https://stackoverflow.com/questions/796 ... o-load-mp3
Мобильная версия