mp3-Datei(en) mit QMediaPlayer abspielen ohne Signal/Slot-Prinzip?



  • Hallo,
    auf der Seite von QT wird das Abspielen von mp3-Dateien wie folgt dargestellt:

    player = new QMediaPlayer;
    connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(positionChanged(qint64)));
    player->setMedia(QUrl::fromLocalFile("/Users/me/Music/coolsong.mp3"));
    player->setVolume(50);
    player->play();
    

    Ich möchte, falls möglich, ohne das Signal/Slot-Prinzip eine mp3-Datei abspielen lassen. Innerhalb einer Funktion ist eine if-/else if Abfrage:

    //diese ist bereits eine private slot-Funktion aus anderen Gründen
    void PaintLowerControls::ClickFuelLeverL(Engine* engineL)
    {
    	if (engineL->Get_lever_fuel() == "cutoff" && Current::GetLmain()) //if cutoff->run
    	{
    		engineL->Set_lever_fuel("run");
    		engineL->Set_fuel_valve(true);
    		Berechne::OnUpdateLowerControls;
    	}
    	else if (engineL->Get_lever_fuel() == "run") //if run->cutoff
    	{
    		engineL->Set_lever_fuel("cutoff");
    		engineL->Set_fuel_valve(false);
    		//if (N1 != 0) { cautionsoundplay(); } //Mit dem Aufruf von cautionsoundplay() soll die MP3-Datei abgespielt werden
    		//...
    		engineL->SetN1(0);
    		engineL->SetN2(0);
    		engineL->SetN1_soll(0);
    		engineL->SetN2_soll(0);
    		Berechne::OnUpdateLowerControls;
    	}
    }
    

    wo es erwünscht ist, mit einer Funktion wie cautionsoundplay() die Tonausgabe zu machen. Später soll diese aber auch aus einer anderen Klasse/Funktion aufgerufen werden können. Ziel ist es also, aus einer beliebigen Funktion die Tonausgabe zu starten und nicht mit einen Click über einer QWidget/QPushButton etc. heraus.
    Geht das, wenn ja wie?
    PS: Wenn ich das zum Laufen bringe, werden später noch weitere mp3-Dateien nach dem gleichen Schema eingebunden. Ggf. mit einer eigenen Klasse.



  • öhm das abspielen selbst funktioniert doch ohne signale. Im beispiel wird nur auf das signal positionChanged ein slot verbunden der dann wohl ne "timebar" oder ähnliches aktualisieren soll.
    Hat aber nichts mit dem abspielen an sich zu tun



  • Ich habe den Fehler inzwischen gefunden. Falsch war der Aufruf

    this->setMedia(QUrl::fromLocalFile(":/MainWindow/sound/caution.mp3"));
    

    Es muss aber heißen:

    this->setMedia(QUrl::fromLocalFile("caution.mp3"));
    

Anmelden zum Antworten