返回主窗口/ C ++后,应用程序正在关闭

Suthura Sudharaka

在我的主窗口中,我使用此代码打开了我的游戏应用程序

void MainWindow::on_playButton_clicked(){   
    CSpaceInwaders* pGame = new CSpaceInwaders(qApp->screens()[0]->size());
    pGame->showFullScreen();
    pGame->Run();
}

然后在那是我调用的运行函数

void CSpaceInwaders::Run(){
scene()->clear();
setCursor(Qt::BlankCursor);

m_pCannon =new CCannon(EColor::Red);
m_pCannon->setPos(m_onScreenSize.width()/2,m_onScreenSize.height()-gCannonSize.height());
m_pCannon->setFlag(QGraphicsItem::ItemIsFocusable);
m_pCannon->setFocus();
scene()->addItem(m_pCannon);

connect(m_pCannon, &CCannon::sigIncreaseScore,this,&CSpaceInwaders::onIncreaseScore);
connect(m_pCannon, &CCannon::sigDecreseScore,this,&CSpaceInwaders::onDecreseScore);

m_pPoints = new CPoints();
scene()->addItem(m_pPoints);

QTimer* pTimer = new QTimer(this);
connect(pTimer, &QTimer::timeout,this,&CSpaceInwaders::onCreateEnemy);
pTimer->start(2000);}

比赛结束后,我想回到主窗口。所以我用了这个功能

void CSpaceInwaders::onGameOver(){
scene()->clear();
QMessageBox msgBox;
msgBox.setText("Game.");
msgBox.setInformativeText("You got hit ! Game Over");
msgBox.setStandardButtons(QMessageBox::Ok);
int ret = msgBox.exec();
switch (ret) {
  case QMessageBox::Ok:
    close();
    MainWindow w;
    w.show();
}}

这将我带回到主窗口,但几秒钟后关闭。

我想知道如何解决这个问题

注意:使用QT创建

一些程序员哥们

问题出在以下情况的代码中:

case QMessageBox::Ok:
    close();
    MainWindow w;
    w.show();

这个问题有两个方面:首先,您实际上无法case像这样定义变量您需要添加一个范围。我很惊讶编译器没有为此大吼大叫。

第二个问题(也是导致您出现问题的原因)是该变量w语句内的局部变量switch语句结束后,生命周期也结束了,w并且它被破坏并且不复存在。

解决方案(据我所知)似乎很简单:不要创建和打开新的主窗口!当您启动“太空侵略者”游戏时,您永远不会关闭原始主窗口,它仍应在后台运行。

但是,这是“运行”本质上应该是单独程序或者至少在正常程序流和事件循环中至少一部分的“糟糕”方式。可以将小型游戏提取到自己的程序中,然后加载并执行,或者不创建单独的应用程序对象,而只是打开一个普通窗口,然后让主应用程序事件循环处理它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

打开应用程序后关闭终端窗口

来自分类Dev

在Qt中关闭主窗口后,如何返回信息?

来自分类Dev

WPF C#应用程序我有两个主窗口

来自分类Dev

C++ 应用程序:将值从窗体传递到主窗口私有变量

来自分类Dev

C#双屏应用程序,如何从第二个窗口更改主窗口的框架?

来自分类Dev

关闭最后一个窗口后,关闭Mac OS X应用程序

来自分类Dev

关闭启动画面窗口并打开应用程序主窗口时,InvalidCastException错误

来自分类Dev

在 C 中隐藏应用程序窗口

来自分类Dev

使用gtkmm / C ++关闭来自消息框的主窗口

来自分类Dev

使用Xlib关闭应用程序窗口

来自分类Dev

使用Xlib关闭应用程序窗口

来自分类Dev

WPF应用程序由于不可见的主窗口实例而无法关闭

来自分类Dev

一两个星期后,C#应用程序关闭

来自分类Dev

C# 控制台应用程序在我运行后自行关闭

来自分类Dev

按返回按钮关闭应用程序

来自分类Dev

防止返回或关闭应用程序

来自分类Dev

按返回按钮后,不进入主活动,而是关闭应用程序

来自分类Dev

布局仅在屏幕关闭或离开应用程序并返回后显示儿童

来自分类Dev

在 app.exec() 返回后关闭 PyQT 应用程序时出错

来自分类Dev

从主屏幕返回到正在运行的应用程序时的新Surfaceview

来自分类Dev

C#控制台应用程序:主方法返回值VS Application.ExitCode

来自分类Dev

如何防止关闭窗口时关闭应用程序?

来自分类Dev

屏幕重新打开后,应用程序窗口全部移至主显示屏

来自分类Dev

如何使主窗口等到C#WPF中新打开的窗口关闭?

来自分类Dev

从QDialog关闭主窗口

来自分类Dev

从主窗口关闭QDialog

来自分类Dev

控制台应用程序:关闭窗口与程序结束

来自分类Dev

自动调整qt应用程序的大小。(主窗口)

来自分类Dev

检查应用程序的主窗口是否打开并加载

Related 相关文章

  1. 1

    打开应用程序后关闭终端窗口

  2. 2

    在Qt中关闭主窗口后,如何返回信息?

  3. 3

    WPF C#应用程序我有两个主窗口

  4. 4

    C++ 应用程序:将值从窗体传递到主窗口私有变量

  5. 5

    C#双屏应用程序,如何从第二个窗口更改主窗口的框架?

  6. 6

    关闭最后一个窗口后,关闭Mac OS X应用程序

  7. 7

    关闭启动画面窗口并打开应用程序主窗口时,InvalidCastException错误

  8. 8

    在 C 中隐藏应用程序窗口

  9. 9

    使用gtkmm / C ++关闭来自消息框的主窗口

  10. 10

    使用Xlib关闭应用程序窗口

  11. 11

    使用Xlib关闭应用程序窗口

  12. 12

    WPF应用程序由于不可见的主窗口实例而无法关闭

  13. 13

    一两个星期后,C#应用程序关闭

  14. 14

    C# 控制台应用程序在我运行后自行关闭

  15. 15

    按返回按钮关闭应用程序

  16. 16

    防止返回或关闭应用程序

  17. 17

    按返回按钮后,不进入主活动,而是关闭应用程序

  18. 18

    布局仅在屏幕关闭或离开应用程序并返回后显示儿童

  19. 19

    在 app.exec() 返回后关闭 PyQT 应用程序时出错

  20. 20

    从主屏幕返回到正在运行的应用程序时的新Surfaceview

  21. 21

    C#控制台应用程序:主方法返回值VS Application.ExitCode

  22. 22

    如何防止关闭窗口时关闭应用程序?

  23. 23

    屏幕重新打开后,应用程序窗口全部移至主显示屏

  24. 24

    如何使主窗口等到C#WPF中新打开的窗口关闭?

  25. 25

    从QDialog关闭主窗口

  26. 26

    从主窗口关闭QDialog

  27. 27

    控制台应用程序:关闭窗口与程序结束

  28. 28

    自动调整qt应用程序的大小。(主窗口)

  29. 29

    检查应用程序的主窗口是否打开并加载

热门标签

归档