QMediaplayer:没有声音
QMediaplayer: No sound
问题:
以下调用不会使 QMediaPlayer 播放任何声音。
player->setMedia(QUrl("qrc:/snd/coin-refund.mp3"));
player->play();
其中 player
的类型为 QMediaPlayer*
。
其中 URL 是使用 QtCreator Copy URL 选项生成的。所以文件肯定在 .qrc 文件中。
详情:
我有一个从 QObject
派生的 class 像这样:
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)
[...]
问题: 以下调用不会使 QMediaPlayer 播放任何声音。
player->setMedia(QUrl("qrc:/snd/coin-refund.mp3"));
player->play();
其中 player
的类型为 QMediaPlayer*
。
其中 URL 是使用 QtCreator Copy URL 选项生成的。所以文件肯定在 .qrc 文件中。
详情:
我有一个从 QObject
派生的 class 像这样:
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)
[...]