要在QML中显示由QMediaPlayer读取的文件,您可以使用Qt Multimedia模块和QML MediaPlayer组件。以下是一个简单的示例:
- 在main.cpp中创建一个QMediaPlayer实例并将其传递给QQuickView:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtMultimedia/QMediaPlayer>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
// 创建 QMediaPlayer 实例
QMediaPlayer mediaPlayer;
// 将 mediaPlayer 作为上下文属性传递给 QML 引擎
engine.rootContext()->setContextProperty("mediaPlayer", &mediaPlayer);
const QUrl url(QStringLiteral("path/to/your/file")); // 替换为您的音频文件路径
// 设置媒体源
mediaPlayer.setMedia(url);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
- 在main.qml中,使用MediaPlayer组件来显示和控制音频播放:
import QtQuick 2.12
import QtQuick.Controls 2.5
import QtMultimedia 5.12
ApplicationWindow {
visible: true
width: 640
height: 480
MediaPlayer {
id: mediaPlayer
source: "path/to/your/file" // 替换为您的音频文件路径
AutoLoad: true
onStatusChanged: {
if (status === MediaPlayer.EndOfMedia) {
mediaPlayer.stop();
}
}
AudioOutput {
id: audioOutput
outputDevice: AudioOutput.PrimaryRole
}
VideoOutput {
id: videoOutput
anchors.fill: parent
source: mediaPlayer
}
}
Button {
text: mediaPlayer.playbackState === MediaPlayer.Playing ? "Pause" : "Play"
onClicked: {
if (mediaPlayer.playbackState === MediaPlayer.Playing) {
mediaPlayer.pause();
} else {
mediaPlayer.play();
}
}
}
}
确保将”path/to/your/file”替换为您实际的音频文件路径。这样,当您运行应用程序时,它将在QML界面中显示并播放该音频文件。
内容由零声教学AI助手提供,问题来源于学员提问