2

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

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

这就是我所做的:

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

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

我已将 qApp->quit() 替换为 qApp->exit、QApplication::quit()、QCoreApplication::exit() 等,并且没有关闭主程序。

有什么建议么?

4

2 回答 2

2

试试这个:

#include <QApplication>
#include <QProcess>

qApp->quit();
QProcess::startDetached("update.exe");
于 2013-10-31T08:12:36.483 回答
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"
于 2013-10-31T08:33:57.923 回答