c++ - QMediaplayer:没有声音

标签 c++ qt qt5 qmediaplayer

问题: 以下调用不会让 QMediaPlayer 播放任何声音。

player->setMedia(QUrl("qrc:/snd/coin-refund.mp3"));
player->play();

其中 playerQMediaPlayer* 类型。 使用 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

编辑:

github link

ldd output (pastebin)

最佳答案

问题似乎是对象没有在构造函数中正常启动,目前我找到的解决方案是每次你想做play()时都创建对象。

void automaton::vendorSlot(const unsigned int buttonPressed)
{
    player = new QMediaPlayer;
    switch (buttonPressed)
    [...]

关于c++ - QMediaplayer:没有声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075476/

相关文章:

c++ - qt |是否可以同时使用声明性和快速模块

android - 如何在 Android 应用程序中打开设备节点 (/dev/hidraw0)(通过 C++)?

c++ - 数组类 - 获取最大和最小值

QT http 设置用户代理

c++ - QObject::connect:在使用 Lambda 语法的升级小部件中找不到信号

c++ - 如何使用 QCustomPlot 在 Qt 中绘制多条图形线

c++ - 如何获取QTreeView中没有出现的文件

c++ - 帮助在 int main() 中显示 vector

c++ - 为什么这段代码没有显示 10^5 左右的 n 的输出

python - qt 和 PyQt4 的区别