Qt之重啟應用程式

來源:互聯網
上載者:User
簡介

今天分享的內容有些意思-如何重啟一個應用程式。其實,有時候這是一個很重要的功能點,而且很人性化、易用性很好。

例如:切換使用者。當某個使用者登入成功之後,需要切換到其它帳號,那麼這時,你就知道它的重要性了。

簡介 效果 qApp結束代碼重啟 定義結束代碼 重啟操作 修改應用程式迴圈 QProcess重啟 源碼下載

效果

qApp結束代碼重啟 定義結束代碼

比較好的方式,在主視窗中定義一個靜態變數:

static int const EXIT_CODE_REBOOT;

並進行初始化:

int const Widget::EXIT_CODE_REBOOT = -123456789;

或者可以定義一個全域變數或常量值。 重啟操作

接下來定義一個槽函數,裡麵包含應用程式重啟的代碼:

void Widget::reboot(){    qApp->exit(Widget::EXIT_CODE_REBOOT);}

建立一個操作,將使用上面的槽來重啟程式。

QPushButton *pButton = new QPushButton(this);pButton->setText(QStringLiteral("重啟"));connect(pButton, SIGNAL(clicked(bool)), this, SLOT(reboot()));
修改應用程式迴圈

最後一步,修改應用程式的main函數來處理新的迴圈,將允許程式重啟:

int main(int argc, char *argv[]){    int nExitCode = 0;    do {     QApplication a(argc, argv);     Widget w;     w.show();     nExitCode = a.exec();    } while(nExitCode == Widget::EXIT_CODE_REBOOT);    return nExitCode;}

上面的方式介紹完了,還有一種更簡單的方式,使用QProcess啟動。 QProcess重啟

無需要定義重啟碼,也無需要修改應用程式迴圈。只需要一個簡單的槽函數即可。

定義一個槽函數,裡麵包含應用程式重啟的代碼:

void Widget::reboot(){    QString program = QApplication::applicationFilePath();    QStringList arguments = QApplication::arguments();    QString workingDirectory = QDir::currentPath();    QProcess::startDetached(program, arguments, workingDirectory);    QApplication::exit();}
源碼下載 Qt之重啟應用程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.