如何在qt中完全关闭窗口?

时间:2015-04-10 01:23:44

标签: c++ qt

我正在使用C ++和Qt Creator创建游戏。当我的健康状况低于零时,我想退出当前的应用程序并显示另一个显示退出或再次播放的屏幕。

我可以使用hide()方法执行此操作,然后使用show()方法显示新屏幕。

但是,如果我在游戏仍然在后台运行时执行此操作,即使隐藏了音乐,我仍然可以听到音乐播放。这个问题的主要问题是,当我再次单击“再次播放”按钮并在新窗口中再次加载游戏时,分数和健康状况会受到我隐藏的旧游戏中仍然存在的影响。

有没有办法可以完全关闭窗口,以便退出游戏,但仍然会加载我想要的下一个窗口?

2 个答案:

答案 0 :(得分:1)

删除窗口实例并为下一个游戏创建一个新实例。或者保留它并实现适当的应用程序状态,以便在游戏未处于运行状态时控制音乐之类的内容。

答案 1 :(得分:0)

这听起来像是一个实现问题,这是你可以做的一个例子:

//in the main header declare a pointer to your game.
GameClass *game;

//in the main class when the game is supposed to start.
game = new GameClass(parent);
connect(game, SIGNAL(GameOver(int)), this, SLOT(cleanUpGame(int)));
game->show();

//define the slot in the main class
function cleanUpGame(int code){
    switch(code) .... //check the game over code
    case USER_KILLED:
        if(game != NULL){
            delete game;
            game=NULL;
        }

    break;
}

//in the game class header class description add
signals:
void GameOver(int);

//in the game class when you are finished.
 emit GameOver(USER_KILLED);
 this->close();