QMediaplayer:没声音

时间:2017-05-19 17:06:23

标签: c++ qt qt5 qmediaplayer

问题: 以下电话不会让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:定时器只能用于以...开头的线程   的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)

1 个答案:

答案 0 :(得分:1)

问题似乎是对象无法在构造函数中正确启动,这是我到目前为止每次要执行[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model) { var userManager = UserManager; ApplicationUser user = userManager.FindByEmail(model.Email); if (user != null) { var code = await userManager.GeneratePasswordResetTokenAsync(user.Id); var callbackUrl = Url.Action("ResetPassword", "Account", new { UserId = user.UserID, code = code }, protocol: Request.Url.Scheme); //Test token immediately var result = await userManager.ResetPasswordAsync(user.UserID, code, "randomPassword"); MailMessage message = new MailMessage("no-reply@abc.com", user.Email); string baseUrl = Request.Url.Scheme + "://" + Request.Url.Authority; string resetLink = string.Format("<a href='{0}'>Click Here</a>", callbackUrl); // Email service - send email } return RedirectToAction("EmailSent"); } 时创建对象的解决方案。

play()