C++ 如何在qt中重新启动应用程序?

C++ 如何在qt中重新启动应用程序?,c++,qt,restart,qdialog,C++,Qt,Restart,Qdialog,我这样做是为了重新启动游戏,但程序有错误。当用户失败时,我想显示一个QDialog。在这个QDilag中,我放置了两个按钮以重试并退出。我还有一个QDialog用于开始游戏。我的错误在哪里?(我读过类似的问题,并根据这些问题做了回答,但我有问题) extern int const EXIT\u code\u重启; mydialog_end::mydialog_end(QWidget*父项): QDialog(父级) { 重试=新建QPushButton(此按钮); 退出=新的QPushButto

我这样做是为了重新启动游戏,但程序有错误。当用户失败时,我想显示一个
QDialog
。在这个
QDilag
中,我放置了两个
按钮以重试并退出。我还有一个
QDialog
用于开始游戏。我的错误在哪里?(我读过类似的问题,并根据这些问题做了回答,但我有问题)

extern int const EXIT\u code\u重启;
mydialog_end::mydialog_end(QWidget*父项):
QDialog(父级)
{
重试=新建QPushButton(此按钮);
退出=新的QPushButton(此按钮);
重试->设置文本(“重试”);
退出->设置文本(“退出”);
连接(重试,信号(单击()),此,插槽(在重试时单击());
连接(退出,信号(单击()),此,插槽(在退出时单击());
}
void mydialog\u end::在重试时单击()
{
qApp->exit(退出\代码\重新启动);
接受();
}
void mydialog\u end::在退出时单击()
{
//比赛结束后我该怎么做?
拒绝();
}
//////////////课堂上我的敌人///////
公众时段:
无效损失();
void Myenemy1::loss()
{
如果(这个->碰撞开关(_mario))
{
//做点什么。。。。
mydialog\u end dialog;
dialog.exec();
}
}
//////////////大体上////////////
外部int const重新启动代码;
int main(int argc,char*argv[])
{
Mydialogstart dlg;//用于开始游戏的对话框
int state=dlg.exec();
int return_from_event_loop_code=0;
做
{
质量保证申请a(argc、argv);
主窗口w;
if(state==QDialog::Accepted)
{
w、 show();

qDebug()在这一点上,我将做一个小小的开场白……假设您的主应用程序名为
a
,那么您应该在全局
B
应用程序中运行
a
。当
a
崩溃时,
B
抛出
QDialog
。如果使用该应用程序,请单击
重试
,然后杀死
a
和s的旧实例启动一个新进程。

您可以使用
QProcess::startDetached
在新进程中运行应用程序的实例并从中分离。然后,您应该退出应用程序:

QProcess process;
process.startDetached("myApp",QStringList());

qApp->quit();
这里的
myApp
是应用程序的可执行文件的名称。在Windows上,它可以是
myApp.exe

有一个非常详细的示例,解释了您需要执行的操作


似乎您至少从中获得了部分灵感,但从您在此处发布的内容来看,您似乎从未在代码示例中初始化EXIT_CODE_REBOOT和RESTART_CODE的值,或者至少将它们彼此链接(我希望您会以某种方式这样做)

现在我该在代码中做什么?我是qt的初学者。如果可能的话,可以将示例代码放在任何需要重新启动的地方。在代码中尝试一下,看看是否有帮助。
QProcess process;
process.startDetached("myApp",QStringList());

qApp->quit();