0

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

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

  text->setPos(400, 500);

  scene->addItem(text);

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

1 回答 1

1

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

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

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

于 2021-04-06T23:40:03.933 回答