【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();
}
原始碼下載
相關推薦
【Qt】Qt之重啟應用程式【轉】
簡介 今天分享的內容有些意思-如何重啟一個應用程式。其實,有時候這是一個很重要的功能點,而且很人性化、易用性很好。 例如:切換使用者。當某個使用者登入成功之後,需要切換到其它賬號,那麼這時,你就知道它的重要性了。 效果 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之旅-4】Linux關機重啟和遠端登入登出
一、關機與重啟相關命令的使用 關機與重啟相關命令 命令 功能 shutdown -h now 立即關機 shutdown -h 1 1分鐘後關機 shutdown -r
【資料庫-MySql】Mysql 服務重啟服務後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訊息