您现在的位置是:首页 >其他 >【C++】QT | QMediaPlayer没声音网站首页其他
【C++】QT | QMediaPlayer没声音
简介【C++】QT | QMediaPlayer没声音
#include "widget.h"
#include "ui_widget.h"
#include <QIcon>
#include <QMediaPlayer>
#include <QAudioOutput>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("MusicPlayer");
this->setWindowIcon(QIcon(":/image/Player.png"));
ui->pushButton_pause->setIcon(QIcon(":/image/pause.png"));
p.setMedia(QUrl::fromLocalFile("E:\Test\music\告白气球.mp3"));
p.play();
}
Widget::~Widget()
{
delete ui;
}
QT5这样写即可播放。但是在QT6中报错:
error: No member named ‘setMedia’ in ‘QMediaPlayer’
搜索后得到方案:setMedia改成setSource
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{
ui->setupUi(this);
p.setSource(QUrl::fromLocalFile("C:\Users\2025\Desktop\first.mp3"));
p.play();
}
还是不行。换了文件位置和引用方法都不行。最后发现是QT6需要加上音频流:
QAudioOutput * audioOutput = new QAudioOutput(this);
完整版:
#include "widget.h"
#include "ui_widget.h"
#include <QIcon>
#include <QMediaPlayer>
#include <QAudioOutput>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{
ui->setupUi(this);
ui->pushButton_pause->setIcon(QIcon(":/image/pause.png"));
QAudioOutput * audioOutput = new QAudioOutput(this);
p.setAudioOutput(audioOutput);
audioOutput->setVolume(0.5); // 调整音量,0~100%
p.setSource(QUrl("D:/qt/QtCreator/MusicPlayer/music/first.mp3"));
p.play();
}
Widget::~Widget()
{
delete ui;
}
注意,路径要用单个“ / ”才能用。QT5可用的“ \ ”失效了。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。