2013-10-31 97 views
2

在我的gui项目中,我需要启动另一个应用程序来更新调用初始更新的应用程序..如果有意义的话。打开外部应用程序并关闭当前应用程序

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

这是我做过什么:

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

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

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

有什么建议吗?

回答

1

试试这个:

#include <QApplication> 
#include <QProcess> 

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

申请犯规收盘:/ – mrg95

+1

'qApp-> quit();'只能在'QApplication :: exec()'调用后才能工作,我想。 – vahancho

+0

我在qApp-> quit()之前添加了qapplication :: exec(),它没有关闭。相反,它只在我手动关闭它时才打开update.exe。 – mrg95

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" 
+0

快问题了,这个怎么关闭主程序? – mrg95

+0

@ mc360pro,好吧,我已经更新了代码,以便在启动第一个应用程序5秒后启动另一个应用程序。最初的应用程序。将被关闭。 – vahancho

+0

我必须下车atm,但我会尽快尝试这一点,并回到你:) – mrg95

相关问题