Есть две взаимосвязанные функции, collectInfo()
void collectInfo(){
title = player->metaData(QMediaMetaData::Title).toString();
artist = player->metaData(QMediaMetaData::ContributingArtist).toString();
cover = player->metaData(QMediaMetaData::CoverArtImage).toString();
}
Где title, artist и player - переменные типа QString.
И playMusic(), которая обращается к формам
void guiPlayer::playMusic(){
player->play();
play = 1;
ui->nameLabel->setText("Playing");
ui->trackNameLabel->setText( title );
ui->trackComposeLabel->setText( artist );
if(!cover.isEmpty()) ui->Cover->setPixmap(cover);
setWindowTitle(list[lurking]);
}
То есть сначала собирается информация об ID3 тегах, которые затем передаются на форму.
Данные функции вызываются по нажатии одной из кнопок.
//загрузить музыку
void guiPlayer::on_loadButton_clicked()
{
QFileDialog dialog(this);
dialog.setDirectory(QDir::homePath());
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setNameFilter(trUtf8("Mp3 files (*.mp3)"));
if (dialog.exec()){
list = dialog.selectedFiles();
lurking = 0;
player->setMedia(QUrl::fromLocalFile(list[lurking]));
ui->trackNameLabel->setText("Press \"play\" to begin");
empty = 0;
}}
//воспроизведение музыки
void guiPlayer::on_playButton_clicked()
{
if(!empty){
if(!play){
collectInfo();
playMusic();
}
else{
ui->nameLabel->setText("Paused");
player->pause();
play = 0;}
}}
//предыдущий трек
void guiPlayer::on_backButton_clicked()
{
if(!empty){
if(player->position() <= 5000){
if(--lurking > 0){
--lurking;
player->setMedia(QUrl::fromLocalFile(list[lurking]));
playMusic();}
else{
player->setMedia(QUrl::fromLocalFile(list[
lurking = list.size()-1]));
playMusic();
}}
else
player->setPosition(0);
}}
//следующий трек
void guiPlayer::on_nextButton_clicked()
{
lurking +=1;
if(!empty){
if( lurking < list.size())
player->setMedia(QUrl::fromLocalFile(list[lurking]));
else{
lurking = 0;
player->setMedia(QUrl::fromLocalFile(list[lurking]));
}
collectInfo();
playMusic();
}}
Где player - объект типа QMediaPlayer, list - QStringList, lurking - индекс воспроизводимого трека, play - играет ли трек, empty - пустой ли list.
В итоге отображаются теги только при нажатии на кнопку "играть", когда же при нажатии на другие кнопки лишь играет музыка. В таком случае помогает способ поставить трек на паузу (двойное нажатие на "играть") и продолжить воспроизведение, тогда теги появляются.
Пробовал вызывать on_playButton при нажатии на другие кнопки, но эффект был тот же.
Подскажите, как можно решить данную проблему?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
здраствуйте, есть список с элементов класса код класса:
Добрый вечерУ меня такой вопрос, недавно лазил в инете и наткнулся на такой код: return*this*Fraction(fra
Доброго времени суток коллегиЕсть задача используя QTableWidget проверять введенные пользователем данные в ячейки с помощью нехитрой конструкции