My example works with Qt 6.2.4. You can download it from DropBox here. Many thanks to the guys in this topic: How to play sounds using QMediaPlayer
media-player-qt6-cpp.pro
QT += core gui multimedia
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
widget.cpp
HEADERS += \
widget.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
audio.qrc
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QtWidgets/QWidget>
#include <QtMultimedia/QMediaPlayer>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void play();
private:
QMediaPlayer mediaPlayer;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QtCore/QUrl>
#include <QtWidgets/QPushButton>
#include <QtMultimedia/QAudioOutput>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
mediaPlayer.setSource(QUrl("qrc:/assets/audio/music.wav"));
mediaPlayer.setAudioOutput(new QAudioOutput);
QPushButton *playButton = new QPushButton("Play", this);
connect(playButton, &QPushButton::pressed, this, &Widget::play);
connect(&mediaPlayer, &QMediaPlayer::mediaStatusChanged,
[=](QMediaPlayer::MediaStatus status) -> void{ qDebug() << "QMediaPlayer::mediaStatusChanged" << status;}
);
}
Widget::~Widget()
{
}
void Widget::play()
{
mediaPlayer.play();
qDebug() << "play";
}
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}