问题: 以下调用不会让 QMediaPlayer 播放任何声音。
player->setMedia(QUrl("qrc:/snd/coin-refund.mp3"));
player->play();
其中 player
是 QMediaPlayer*
类型。
使用 QtCreator 复制 URL 选项生成 URL 的位置。所以该文件肯定在 .qrc 文件中。
详细信息:
我有一个派生自 QObject
的类,如下所示:
class MyClass : public QObject
{
Q_OBJECT
// some stuff
private:
QMediaPlayer* player;
}
像这样在 MyClass 构造函数中调用 QMediaPlayer 标准构造函数...
MyClass::MyClass() :
player(new QMediaPlayer)
{
}
...在运行时导致以下错误消息(应用程序编译时没有任何警告)
QObject::startTimer: Timers can only be used with threads started with QThread
删除播放器会删除此消息(我没有明确创建任何 QThreads 或 QTimers)。
在我的 .pro 文件中我有:
QT += core gui webkitwidgets multimedia multimediawidgets widgets
附加信息: 我在 Arch Linux 上,使用 QtCreator 4.2.2 和 Qt 5.8.0
编辑:
最佳答案
问题似乎是对象没有在构造函数中正常启动,目前我找到的解决方案是每次你想做play()
时都创建对象。
void automaton::vendorSlot(const unsigned int buttonPressed)
{
player = new QMediaPlayer;
switch (buttonPressed)
[...]
关于c++ - QMediaplayer:没有声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075476/