Qt 应用程序重启

22 篇文章 0 订阅

重启,也就是退出当前进程,启动一个新的进程。于是,先看程序如何退出

退出

Qt程序的一般结构如下:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

最后一句启动了主线程的事件循环。而要退出程序,就是要退出这个事件循环,使main函数返回。

如何退出?

正确方式:

  • QCoreApplication::exit(int);

它还有一个马甲

  • QCoreApplication::quit();

对于QApplication来说,它有一个常用的属性

  • quitOnLastWindowClosed

所以,当最后一个窗口关闭时,它可以自动调用前面的exit()

而至于关闭窗口呢,我们还可以使用

  • QApplication::closeAllWindows()

注:一般来说,对于多个窗口的程序,调用这个会比直接调用quit要好。因为这样窗口可以接受到Close事件。
 

启动外部程序

在Qt中,做这个工作的非QProcess莫属了,要启动当前程序的另一个进程,有要使二者没有"父子"关系。恩

  • QProcess::startDetached(qApp->applicationFilePath(), QStringList());

可是,为什么不写成下面这样?

  • QProcess::startDetached(qApp->applicationFilePath());

当然,如果路径中不包含空格,这个也可以工作。
 

重新启动1

现在简单了,要重新启动,只需要调用

void MainWindow::on_toolButton_clicked()
{
    qApp->quit();
    QProcess::startDetached(qApp->applicationFilePath(), QStringList());
}


或者:

void MainWindow::on_toolButton_clicked()
{
    qApp->closeAllWindows();
    QProcess::startDetached(qApp->applicationFilePath(), QStringList());
}


重新启动2

尽管没什么好处,但有时候,我似乎更喜欢这样写:

void MainWindow::on_toolButton_clicked()
{
    qApp->exit(773);
}


然后main函数改成

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    int ret = a.exec();
    if (ret == 773) {
        QProcess::startDetached(qApp->applicationFilePath(), QStringList());
        return 0;
    }

    return ret;
}


这里面我用了一个魔数:773,没什么特别含义,只是因为我觉得

773 = 'r'+'e'+'s'+'t'+'a'+'r'+'t'     ==>restart


编程好习惯----避免使用魔数,哈哈哈

  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Qt Watchdog程序是一个用于监控和管理Qt应用程序的工具。Watchdog(看门狗)是一种用于监控和控制电子设备的机制,以确保设备在出现故障或异常情况时能够自动重或采取其他必要的措施。 Qt Watchdog程序可以通过以下几个方面来实现对Qt应用程序的监控和管理: 1. 心跳检测:Watchdog程序会周期性地发送心跳信号给被监控的Qt应用程序,以确认其是否在正常运行。如果心跳信号没有及时接收到,Watchdog程序就会判断应用程序已经出现故障,并立即采取相应的措施,例如重应用程序或发送通知给管理员。 2. 进程监控:Watchdog程序会监控Qt应用程序的进程状态,包括进程的运行状态、内存使用情况、CPU占用率等。当进程出现异常情况时,Watchdog程序可以及时发现并处理,以保证应用程序的稳定性和可靠性。 3. 日志记录:Watchdog程序会记录Qt应用程序的运行日志,包括错误日志、警告日志和普通日志。这些日志可以帮助开发人员快速定位和解决问题,并为系统管理员提供有关应用程序运行状况的详细信息。 4. 异常处理:当Qt应用程序出现异常情况时,Watchdog程序可以根据事先设定的处理策略来采取相应的措施,例如自动重应用程序、发送报警信息、进行故障排查等。这样可以最大程度地减少应用程序故障对系统的影响和损害。 综上所述,Qt Watchdog程序是一个用于监控和管理Qt应用程序的工具,通过心跳检测、进程监控、日志记录和异常处理等功能,可以提高应用程序的稳定性和可靠性,并及时发现和解决问题,保证系统的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值