1. 程式人生 > >【Qt】Qt之重啟應用程式【轉】

【Qt】Qt之重啟應用程式【轉】

簡介

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

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

效果

這裡寫圖片描述

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();
}

原始碼下載

相關推薦

QtQt應用程式

簡介 今天分享的內容有些意思-如何重啟一個應用程式。其實,有時候這是一個很重要的功能點,而且很人性化、易用性很好。 例如:切換使用者。當某個使用者登入成功之後,需要切換到其它賬號,那麼這時,你就知道它的重要性了。 效果 qApp退出程式碼重啟 定義退出程式碼 比較好的方式,在主視窗中定

Qt 應用程式

簡介 今天分享的內容有些意思-如何重啟一個應用程式。其實,有時候這是一個很重要的功能點,而且很人性化、易用性很好。 例如:切換使用者。當某個使用者登入成功之後,需要切換到其它賬號,那麼這時,你就知道它的重要性了。 | 效果 qApp退出程式碼

Android 應用程式 的兩種方式

/** * 重新啟動App -> 殺程序,會短暫黑屏,啟動慢 */ public void restartApp() { //啟動頁

Android中應用程式的幾種方法

1.  Intent intent = new Intent(this, Object.class); startActivity(intent); 2. 通過ActivityManager來重新啟動應用程式: ActivityManager manager = (Act

Linux旅-4Linux關機和遠端登入登出

一、關機與重啟相關命令的使用 關機與重啟相關命令 命令 功能 shutdown -h now 立即關機 shutdown -h 1 1分鐘後關機 shutdown -r

資料庫-MySqlMysql 服務服務後5s左右自動關閉

背景 Window系統:Windows Server 2008 R2 資料庫版本:Mysql 5.5.8 AutoDM.err 181220 10:14:29 [Note] Plugin 'FEDERATED' is disabled. InnoDB: The InnoDB me

QT啟動應用程式的方法

標頭檔案:#include <QProcess>#include <QDir>實現:void Language_Setting::reboot() { QString p

Weblogic計劃任務腳本

tst critical erro dmi 環境 判斷 interval pro 僵屍進程 只需要在服務器上創建兩個文件即可:1、vim config.txt **** JAVA ***** AIX平臺的JAVA常為:/usr/java5/bin/java Linux平臺的

vue大師晉級路第一集:Vue基礎第6章——條件渲染

條件渲染 v-if 在字串模板中,比如 Handlebars,我們得像這樣寫一個條件塊: <!-- Handlebars 模板 --> {{#if ok}} <h1>Yes</h1> {{/if}} 在 Vue 中,我們使用 v-if

vue大師晉級路第一集:Vue基礎第5章——Class 與 Style 繫結

Class 與 Style 繫結 操作元素的 class 列表和內聯樣式是資料繫結的一個常見需求。因為它們都是屬性,所以我們可以用 v-bind 處理它們:只需要通過表示式計算出字串結果即可。不過,字串拼接麻煩且易錯。因此,在將 v-bind 用於 class 和 style 時,Vue

vue大師晉級路第一集:Vue基礎第4章——計算屬性和偵聽器

計算屬性 模板內的表示式非常便利,但是設計它們的初衷是用於簡單運算的。在模板中放入太多的邏輯會讓模板過重且難以維護。例如: <div id="example"> {{ message.split('').reverse().join('') }} </div&g

vue大師晉級路第一集:Vue基礎第3章——模版語法

模板語法 Vue.js 使用了基於 HTML 的模板語法,允許開發者宣告式地將 DOM 繫結至底層 Vue 例項的資料。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循規範的瀏覽器和 HTML 解析器解析。 在底層的實現上,Vue 將模板編譯成虛擬 DOM 渲染函式。結

vue大師晉級路第一集:Vue基礎第2章——Vue 例項

建立一個 Vue 例項 每個 Vue 應用都是通過用 Vue 函式建立一個新的 Vue 例項開始的: var vm = new Vue({ // 選項 }) Vue 應用由一個通過 new Vue 建立的根 Vue 例項,以及可選的巢狀的、可複用的元件樹組成。

vue大師晉級路第一集:Vue基礎第1章——介紹

背景 Vue (讀音 /vjuː/,類似於 view) 是一套用於構建使用者介面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注檢視層,不僅易於上手,還便於與第三方庫或既有專案整合。另一方面,當與現代化的工具鏈以及各種支援類庫結合使用時,

vue大師晉級路第一集:Vue基礎第8章——事件處理

事件處理 監聽事件 可以用 v-on 指令監聽 DOM 事件,並在觸發時執行一些 JavaScript 程式碼。 <div id="example-1"> <button v-on:click="counter += 1">Add 1<

Anychart教程在您的Xamarin應用程式中建立美觀且使用者友好的表單

下載Telerik UI for Asp.Net最新版本 幾乎每個移動應用都有收集使用者輸入的場景。正是考慮到這一點,我們為Xamarin的Telerik UI引入了Entry控制元件,以幫助您建立漂亮且使用者友好的表單。 在Telerik UI中為Xamarin引入新條目 用於Xama

QT | 設定.png格式圖片為應用程式圖示

1、將.png檔案先轉換為.ico,再在工程檔案.pro中,加 RC_ICONS = appico.ico 2、將.png檔案弄進資原始檔中,如: 在main方法中: Q_INIT_RESOURCE(logo);//資源定義巨集 a.setWindowIcon(QIcon(

windows應用程式hello,world!

     #include <windows.h> #include <stdio.h> int WINAPI WinMain(HINSTANCE hlnstance,HINSTANCE hPrelnstance,LPSTR

windows應用程式靜態連結庫和動態連結庫

在寫c語言程式時,我們會呼叫標頭檔案 呢麼標頭檔案理論上一定有實現方法 我們可以去檢視標頭檔案一般在你安裝vc目錄下的/vc98/include 來看一下windows.h 但是我們發現windows.h中只是一些定義與宣告 呢麼我們再來看windows.h的標頭檔案 我們開啟wi

windows應用程式建立視窗

我們在建立視窗時需要的過程  關於訊息迴圈 因為處理器同時只能執行一個程式 因此我們需要作業系統去排程程式 因此我們只是將訊息傳給作業系統 等待迴應從而由作業系統來顯示我們需要的視窗 wndproc() 視窗過程負責用來響應某一類視窗收到的各種Windows訊息