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
QT重啟動應用程式的方法
標頭檔案:#include <QProcess>#include <QDir>實現:void Language_Setting::reboot() { QString p
全域性捕獲應用程式異常,並在出現異常狀態重啟應用,保持錯誤日誌到手機
public class CrashHandler implements UncaughtExceptionHandler { public static final String TAG = "CrashHandler"; private sta
Qt 之 重復連接信號槽
style ref 重復 rtk doc svg cap http wls 059E2聘853F鉸http://t.docin.com/cufx6020 謔H戳桃桓51A判8w0芯http://t.docin.com/roj681 橙B3em刺灘姑0競eu奧0http:
Weblogic計劃任務之重啟腳本
tst critical erro dmi 環境 判斷 interval pro 僵屍進程 只需要在服務器上創建兩個文件即可:1、vim config.txt **** JAVA ***** AIX平臺的JAVA常為:/usr/java5/bin/java Linux平臺的
js之陣列API(應用程式程式設計介面)
資料API是陣列原型中(Array.prototype.*)的陣列方法 1.新增元素 unshift() 方法(佇列方法) 新增到開頭,返回陣列的length push()方法(棧方法) arr.push(1
使用node-supervisor自動重啟node程式
npm install -g supervisor 還需要把supervisor做一個軟連結到/usr/local/bin/下。 考慮到supervisor跟另一個系統常用的supevisor命令同名容易有衝突,顧只將node-supervisor軟連結過去。 軟連結的命令:
C# FrameworkAPI之Mutex實現應用程式單例
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace DemoCSDN {
替換某個class檔案 重啟tomcat 程式沒反應
環境:linux , tomcat7 , jdk1.7, spring 現象:單獨替換一個class , 重啟tomcat ,正常啟動,日誌不報錯;請求介面,日誌沒反應,介面返回404. 結論:替換的class 是1.8編譯的,與伺服器整體程式編輯jdk不一致。 檢查
QT 打包釋出Release應用程式
一、用windepolyqt.exe提取應用程式依賴.dll檔案 QT Creator release的.exe應用程式的執行需要依賴一些動態連結庫,如果在一臺沒有安裝QT的計算機上執行就需要打包動態庫拷貝過去才能執行。QT自帶有windeployqt.exe可執行程式可以
跨程序通訊之AIDL-----不同應用程式之間跨程序
AIDL,通俗來說就是兩個Android應用要進行通訊,且不能通過網路雲伺服器的方式進行資料互動,只能呼叫本地函式庫的機制來實現,這時Android系統提供AIDL的機制來實現Android的跨程序通訊(使用者程序之間是相對封閉的,無法直接訪問資料)。 我們先不
Android 重啟應用本身
public void restartApplication(Context context) { final Intent intent = context.getPackageManager().getLaunchIntentForPackage(c
Android外掛化開發之AMS與應用程式(客戶端ActivityThread、Instrumentation、Activity)通訊模型分析
今天主要分析下ActivityManagerService(服務端) 與應用程式(客戶端)之間的通訊模型,在介紹這個通訊模型的基礎上,再 簡單介紹實現這個模型所需要資料型別。 本文所介紹內容基於android2.2版本。由於Android版本的不同
JAVA重啟自身程式
,在使用java編寫重啟自身的程式時,本以為很簡單,但是發現沒有那麼順利 一般程式重啟方法:service xxxx restart 但java程式執行這個操作時,發現整個程式只能stop, 不能start 解決思路: 當時想的是,使用後臺命令執行ser
Qt: 多文件應用程式原始碼解析及下載
如果有程式碼看不懂,可以留言,我會回覆大家的留言(Qt、C++純技術交流群:302558294) 效果圖如下: 專案結構: 程式主要功能: 1、新建文字檔案。 2、多文件編輯文字檔案。 3、開啟已有檔案。 4、檔案另存為。 解析: 1、 Editor 類繼承自 Q
Android重啟應用和重啟手機
重啟應用 private void restartApp() { final Intent intent = getPackageManager().getLaunchInte
線程池異常處理之重啟線程處理任務
啟動 環長 topic 過程 pre 設置 消費 execution 記錄 線程池異常處理之重啟線程處理任務 本文記錄一下在使用線程池過程中,如何處理 while(true)循環長期運行的任務,在業務處理邏輯中,如果拋出了運行時異常時怎樣重新提交任務。 這種情形在Kafka