您现在的位置是:首页 >技术交流 >【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可用的“ \ ”失效了。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结