私は(通知など)私のアプリケーションでオーディオファイルを再生するにはQtのドキュメントからのコードスニペットを使用します。QMediaPlayerを自動破壊するにはどうしたらいいですか?
QMediaPlayer *player = new QMediaPlayer();
player->setMedia(QUrl("qrc:/huggle/sounds/" + file));
player->setVolume(100);
player->play();
それはつもり漏れているように、メディアプレーヤーのためのデストラクタがないとしてこれはしかし、私には見えます。
ノンブロッキングで再生が終了したら削除する方法はありますか?おそらくいくつかのイベントをフックすると動作するだろうが、それは明らかではない。
なぜ最初にヒープ上に作成するのですか? – MrEricSir
@MrEricSir関数内にあるので、スタックに定義すると、サウンド再生を開始する前にすぐに破棄されます。 play()は非同期関数であり、即座に戻ります。したがって、オブジェクトは、そのオブジェクトを作成した関数の終了時に破棄されます。 – Petr
それはあまり意味がありません - それが住んでいるクラスの中でそれをインスタンス化しなければなりません。これは、QMediaPlayer特有のものよりもC++のオブジェクトライフサイクルを誤解している大きな問題のようです。 – MrEricSir