问题描述
一旦玩家的生命耗尽,我就会尝试显示“游戏结束”。但是,它在游戏结束后永远不会显示。这是一些示例代码。
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()
应该返回。