• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            zhonghua

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              72 Posts :: 1 Stories :: 4 Comments :: 0 Trackbacks
            • 老有人問如何讓Qt的應用程序自動重啟,稍微寫一點,也順便理理自己的思路 2011.10.26

            自動重啟,也就是退出當前進程,啟動一個新的進程。于是,先看程序如何退出

            退出

            Qt程序的一般結(jié)構(gòu)如下:

            int main(int argc, char** argv) {     QApplication app(argc, argv);     Widget w;     w.show()     return app.exec(); }

            最后一句啟動了主線程的事件循環(huán)。而要退出程序,就是要退出這個事件循環(huán),使main函數(shù)返回。

            如何退出?

            正確方式:

            • QCoreApplication::exit(int);

            它還有一個馬甲

            • QCoreApplication::quit();

            對于QApplication來說,它有一個常用的屬性

            quitOnLastWindowClosed

            所以,當最后一個窗口關(guān)閉時,它可以自動調(diào)用前面的exit()

            而至于關(guān)閉窗口呢,我們還可以使用

            • QApplication::closeAllWindows()

            注:一般來說,對于多個窗口的程序,調(diào)用這個會比直接調(diào)用quit要好。因為這樣窗口可以接受到Close事件。

            啟動外部程序

            在Qt中,做這個工作的非QProcess莫屬了,要啟動當前程序的另一個進程,有要使二者沒有"父子"關(guān)系。恩

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

            可是,為什么不寫成下面這樣?

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

            當然,如果路徑中不包含空格,這個也可以工作。

            重新啟動1

            現(xiàn)在簡單了,要重新啟動,只需要調(diào)用

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

            或者:

            void XXX::onXXX() {     qApp->closeAllWindow();     QProcess::startDetached(qApp->applicationFilePath(), QStringList()); }

            重新啟動2

            盡管沒什么好處,但有時候,我似乎更喜歡這樣寫:

            void XXX::onXXX() {     qApp->exit(773) }

            然后main函數(shù)改成

            int main(int argc, char** argv) { ....     int ret = app.exec();     if (ret == 773) {         QProcess::startDetached(qApp->applicationFilePath(), QStringList());         return 0;     }     return ret; }

            這里面我用了一個魔數(shù):773,沒什么特別含義,只是因為我覺得

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

            上班了,就寫到這兒...

            posted on 2014-01-09 15:13 米米 閱讀(906) 評論(0)  編輯 收藏 引用
            亚洲国产成人精品女人久久久 | 72种姿势欧美久久久久大黄蕉| 久久久久久精品成人免费图片| 无码人妻久久久一区二区三区| 色综合合久久天天综合绕视看| 欧美粉嫩小泬久久久久久久| 久久久久无码精品国产不卡| 久久久久亚洲精品无码网址| 久久精品99久久香蕉国产色戒| 精品久久久久久无码中文字幕| 一本色道久久88精品综合| 色偷偷888欧美精品久久久| 天天躁日日躁狠狠久久| 热久久国产欧美一区二区精品| 国产精品久久久久AV福利动漫| 中文字幕无码久久精品青草 | 一本色道久久88—综合亚洲精品| 久久婷婷久久一区二区三区| 亚洲AV无一区二区三区久久| 亚洲国产日韩欧美综合久久| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 色天使久久综合网天天| 精品久久一区二区三区| 久久婷婷激情综合色综合俺也去| 香蕉aa三级久久毛片| 久久久噜噜噜久久| 91亚洲国产成人久久精品网址| 精品久久久久久国产潘金莲| 蜜臀久久99精品久久久久久小说| 一级做a爰片久久毛片看看| 久久久久久极精品久久久| 国内精品久久久久国产盗摄| 国产精品成人99久久久久91gav| 99久久精品国产综合一区| 久久精品国产亚洲欧美| 久久综合久久久| 亚洲狠狠综合久久| 久久久久久噜噜精品免费直播| 欧美粉嫩小泬久久久久久久| 中文精品久久久久人妻| 久久99久国产麻精品66|