QT核心編程之會(huì)話管理 (6)
QT核心編程之會(huì)話管理是本節(jié)介紹的內(nèi)容,QT核心編程我們要分幾個(gè)部分來介紹,想?yún)⒖几鄡?nèi)容,請(qǐng)看末尾的編輯推薦進(jìn)行詳細(xì)閱讀,先來看本篇內(nèi)容。
一個(gè)會(huì)話是一組正在運(yùn)行的應(yīng)用程序,它們每個(gè)都一個(gè)特殊的狀態(tài)。會(huì)話被一個(gè)稱為會(huì)話管理器(Session manager)的服務(wù)程序來控制。在會(huì)話里每個(gè)參與的應(yīng)用程序被稱為會(huì)話客戶。會(huì)話管理器為用戶發(fā)出命令給它的客戶。這些命令會(huì)使客戶提交沒有保存的變化(如:保存打開的文件),使客戶為將來的會(huì)話保存狀態(tài)或關(guān)機(jī)。這樣的一些操作被稱為會(huì)話管理。
通常情況下,一個(gè)會(huì)話由用戶在其桌面上同時(shí)運(yùn)行的所有應(yīng)用程序組成。在Unix/X11下,一個(gè)會(huì)話可能包括運(yùn)行在不同計(jì)算機(jī)和多個(gè)顯示器上的應(yīng)用程序。
1、會(huì)話管理
(1)關(guān)閉一個(gè)會(huì)話
一個(gè)會(huì)話可以被會(huì)話管理器關(guān)閉,通常在用戶logout時(shí)為用戶關(guān)閉的。一個(gè)系統(tǒng)可以在緊急情況下執(zhí)行自動(dòng)關(guān)閉,例如:在掉電時(shí)。正常關(guān)機(jī)和掉電關(guān)機(jī)有很大的不同,在正常關(guān)機(jī)時(shí),用戶可能想與應(yīng)用程序交互,并確定哪些文件應(yīng)該保存,哪些應(yīng)該刪除。在掉電關(guān)機(jī)時(shí),沒有時(shí)間進(jìn)行交互,甚至于用戶不在現(xiàn)場(chǎng)。
(2)不同平臺(tái)上的協(xié)議和支持
Mac OS X和MS-Windows對(duì)應(yīng)用程序還沒有完全的會(huì)話管理,如:沒法恢復(fù)以前的會(huì)話。它們支持正常的logout,在得到用戶確認(rèn)后,應(yīng)用程序有機(jī)會(huì)取消進(jìn)程。這是與QApplication::comm.itData()方法相對(duì)應(yīng)的功能。X11自從X11R6后,支持完整的會(huì)話管理。
(3)讓會(huì)話管理與Qt一起工作
通過重載QApplication::comm.itData()來使用你的應(yīng)用程序參加正常的logout處理。如果你僅應(yīng)用在MS-Windows平臺(tái)上,就只能提供這個(gè)重載了。你的應(yīng)用程序***提供一個(gè)如圖5的程序關(guān)閉對(duì)話框。
圖5 程序關(guān)閉對(duì)話框
對(duì)于完全的會(huì)話管理(目前僅X11R6),你還應(yīng)該關(guān)心應(yīng)用程序的狀態(tài)存儲(chǔ)和下一個(gè)會(huì)話生命周期恢復(fù)狀態(tài)。
2、測(cè)試和調(diào)試會(huì)話管理
在Mac OS X和Windows上的會(huì)話管理支持由于這些操作系統(tǒng)本身的這種功能的缺乏而受到限制。為了簡單地關(guān)閉會(huì)話并驗(yàn)證你的應(yīng)用程序是否如期望的那樣執(zhí)行,你***啟動(dòng)一個(gè)其它的應(yīng)用程序。這個(gè)應(yīng)用程序?qū)㈦S后得到關(guān)閉消息,這樣允許你取消關(guān)閉。
在Unix上你能使用一個(gè)支持標(biāo)準(zhǔn)的X11R6會(huì)話管理,或使用X聯(lián)盟提供的會(huì)話管理器xsm。xsm是標(biāo)準(zhǔn)X11R6安裝的一部分。它是一個(gè)具有圖形界面的會(huì)話管理器,你可能用它來管理會(huì)話。
下面是使用xsm的一個(gè)簡單的方法:
(1)運(yùn)行X11R6.
(2)在你的home目錄下將創(chuàng)建僅包含下面一行的.xsmstartup文件:
- xterm
這將告訴xsm的default/failsafe(缺省/失敗安全)會(huì)話僅有xterm。否則,xsm將嘗試觸發(fā)包括窗口管理器twm在內(nèi)多個(gè)客戶,這沒有什么用途。
(3)現(xiàn)在從另一個(gè)終端窗口啟動(dòng)xsm。一個(gè)會(huì)話管理器和xterm將出現(xiàn)。xterm有一個(gè)其它的shell沒有的屬性:在xterm的shell里,SESSION_MANAGER環(huán)境變量指向了你剛啟動(dòng)的會(huì)話管理器。
(4)在新的xterm窗口中啟動(dòng)你的應(yīng)用程序,應(yīng)用程序?qū)⒆詣?dòng)連接它到會(huì)話管理器。你能使用ClientList按鈕檢查連接是否成功。
注意:當(dāng)你啟動(dòng)或關(guān)閉會(huì)話管理的客戶時(shí),不要保護(hù)ClientList為打開狀態(tài)。否則,xsm可能崩潰。
(5)使用會(huì)話管理器的Checkpoint和Shutdown按鈕的不同設(shè)置檢查你的應(yīng)用程序執(zhí)行行為。本地保存類型表示客戶端應(yīng)該保存它們的狀態(tài)。它對(duì)應(yīng)著QApplication::saveState()函數(shù)。全局保存類型請(qǐng)求應(yīng)用程序保存它們沒存儲(chǔ)的變化到***的全局可訪問的存儲(chǔ)中。它觸發(fā)QApplication::commitData()。
(6)在用戶桌面上xsm是一個(gè)有用的會(huì)話管理器。作為一個(gè)測(cè)試環(huán)境它是穩(wěn)定的而有用的。
小結(jié):QT核心編程之會(huì)話管理的內(nèi)容介紹完了,希望本既然內(nèi)容對(duì)你有所幫助,更多資料參考在下面的編輯推薦。
【編輯推薦】