打开外部应用程序并关闭当前应用程

时间:2013-10-31 08:09:12

标签: c++ qt user-interface exit

在我的gui项目中,我需要启动另一个应用程序来更新调用初始更新的应用程序..如果这是有道理的。

辅助程序更新主程序的唯一方法是主程序是否关闭。

这就是我所做的:

QDesktopServices::openUrl(QUrl("file:update.exe"));
qApp->quit();

在更新程序中,我还在更新开始之前添加了2秒睡眠定时器以防万一。问题是主程序永远不会关闭。

我已经用qApp->退出,QApplication :: quit(),QCoreApplication :: exit()等替换了qApp-> quit(),并且没有任何内容正在关闭主程序。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

#include <QApplication>
#include <QProcess>

qApp->quit();
QProcess::startDetached("update.exe");

答案 1 :(得分:1)

您可以尝试执行以下操作(希望从源代码中可以清楚地看到):

// Launches another application after 5 seconds.
class Launcher : public QObject
{
    Q_OBJECT
public:
    Launcher()
    {
        QTimer::singleShot(5000, this, SLOT(launch()));
    }
private slots:
    void launch()
    {
        QProcess::startDetached("notepad");
        qApp->quit();
    }
};


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    Launcher launcher;

    [..]

    return app.exec();
}

#include "main.moc"