Über QMediaPlayer Audio abspielen läuft nicht wie gewünscht (Widgets)
-
Hallo,
ich möchte mit dem QMediaPlayer Audiodatei(en) abspielen. Das Abspielen des Audiomediums funktioniert jedoch nicht ganz wie gewünscht. Die auslösende Funktion "PlayEicasCaution()" ist in einem Widget ("eicas" als child von MainWindow) verbunden mit dem Signal/Slot-Prinzip an den Parent (MainWindow) wo der Ton letztendlich abgespielt werden soll. Da das MainWindow größer ist als der Bidlschirm (ScrollArea) und das Widget "eicas" im unteren Bereich liegt, hört man den Ton nach der auslösenden Funktion erst dann wenn man das Widget "eicas" im sichtbaren Bereich des Bildschirms liegt. Also verzögert wenn das eicas nciht zu sehen ist. Die Audiodatei soll aber sofort nach der Signal-Funktion immer sofort gehört werden, egal ob das Widget "eicas" zu sehen ist oder nicht. Ich hoffe, soweit ist alles klar?
Hier noch der bisherige Code:
Audio.cpp:Audio::Audio(QObject* parent, QString name) : QMediaPlayer(parent) { this->setMedia(QUrl::fromLocalFile("sound/" + name + ".mp3")); if (name == "gear_down" || name == "gear_up") { this->setVolume(100); } else { this->setVolume(50); } }
Im Konstruktor von MainWindow:
audioCaution = new Audio(nullptr, "caution"); //Vereinfacht: eicas = new EICAS(basis_canvas); eicas->setGeometry(QRect(1020, 1070, 400, 400)); connect(eicas, &EICAS::PlayEicasCaution, [=]() { PlayAudioCaution(); });
MainWindow.cpp:
void MainWindow::PlayAudioCaution() { audioCaution->play(); }
EICAS.h
signals: void PlayEicasCaution();
"basis_canvas" ist der Inhalt des Widgets "MainWindow" der scrollbar ist.
Was muss ich tun, damit das so wie gewünscht läuft?
Vielen Dank für konstruktive Vorschläge!