问题: 以下电话不会让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
修改
答案 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()