qt 自動重啟(兩種方法)


所謂自動重啟就是程序自動關閉后在重新打開:

一般一個qt程序main函數如下:

int main(int argc, char* argv[])

{

     QApplication app(argc, argv);

     QWidget widget;

     widget.resize(400, 400);

     widget.show();

     return app.exec();

}

一 . 關閉程序

    widget 組建show()之后就進入應用程序的事件循環 app.exec();   所以讓程序自動關閉就需要讓應用程序退出事件循環,怎樣退出呢? 有兩種方案,第一,直接用Qt自帶的全局變量qApp執行qApp->exit()或者qApp->quit(), 第二種方案是利用qt的一個自帶屬性,quitOnLastWindowClosed,就是當GUI最后一個窗口關閉時,GUI程序會發出一個最后窗口關閉的信號,應用程序接到這個信號后就准備做退出事件循環的操作。關閉所有窗口的辦法是 QApplication::closeAllWindows()

二. 重啟

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

所以根據以上思路就可以得到自動關閉重啟的代碼:

void    xxxx:onRestart()

{

    qApp->quit();   // 或者   aApp->closeAllWindows();

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

}

看到一種有意思的方法是在onRestart()中只做退出操作,然后在main函數中做重啟操作。

void xxx:onRestart()

{

    qApp->exit(777);

}

然后main函數中:

int main(int argc, char* argv[])

{

     QApplication app(argc, argv);

     QWidget widget;

     widget.resize(400, 400);

     widget.show();

     int e = app.exec();

     if(e == 777)

    {

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

        return 0;

    }

    return e;

}

 

http://www.cnblogs.com/thorngirl/articles/3940888.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM