结束游戏功能

问题描述

一旦玩家的生命耗尽,我就会尝试显示“游戏结束”。但是,它在游戏结束后永远不会显示。这是一些示例代码

void Game::end()
{
  qgraphicstextitem *text = new qgraphicstextitem("GameOver");

  text->setPos(400,500);

  scene->addItem(text);

  sleep(2);
  QApplication::quit();
}

解决方法

你没有得到想要的结果,因为绘图发生在它被调用的函数内部返回之后,并且它永远不会返回,因为你之前退出了应用程序。正如 drescherjm 指出的那样,尝试使用 QTimer::SingleShot 延迟退出。像这样:

QTimer::singleShot(1000,[](){
    QApplication::exit();
});

因此 QApplication::exit() 在给定的时间间隔内被调用,到那时 Game::end() 应该返回。