QSysInfo獲取作業系統的相關資訊

2021-07-30 12:01:28 字數 1943 閱讀 6675

qsysinfo類可以為我們提供一些有關當前系統的底層資訊。其中包括:

注意,該類中所提供的常量定義,有一些只在特定平台上有效。所以,我們在使用時,可以先使用qt預定義的符號q_os_win和q_os_osx來判斷一下,當前應用程式是在哪個系統下編譯的。

至於該類的使用方法,和我們之前講過的qstorageinfo類似,其成員函式均為靜態方法,我們可以很方便的使用。

qstring qsysinfo::buildabi()
返回編譯qt程式的平台的架構全資訊。其又三個或以上的部分組成,有「-」分隔。具體資訊如下:

cpu architecture

例如,"arm","i386","mips","x86_64"

endianness

"little_endian" 或 "big_endian"

word size

"llp64"(windows 64-bit),"lp64"(unix 64-bit),"ilp32"(32-bit)

(optional)abi

零個或多個該平台上不同的abi

qstring qsysinfo::buildcpuarchitecture()
返回編譯qt程式的cpu架構。注意,這可能和qt程式實際執行的cpu不同,因為可能存在**層或該cpu支援多個架構。

通常的返回值如下:

qstring qsysinfo::currentcpuarchitecture()
返回qt程式當前所執行在的cpu架構。和上面的那個函式相對應。

qstring qsysinfo::kerneltype()

qstring qsysinfo::kernelversion()

返回編譯qt程式的作業系統的核心的型別和版本號。在windows平台上,該函式返回"wince" 或者 "winnt" 及其版本;在unix平台上,該函式的返回值和命令 "uname -rs"的返回值一樣。

qstring qsysinfo::prettyproductname()

qstring qsysinfo::producttype()

qstring qsysinfo::productversion()

返回當前執行qt程式的作業系統的產品名稱和產品的版本。

下面我們就以當前的windows系統為例,來說明一下這些函式的使用及其含義:

輸出結果如下圖:

我們還分析一下各個輸出結果的含義,有助於我們理解上面講到的函式的意思:

windowsversion: 192,十進位制的192,轉換為16進製制就是0xc0,再參照qsysinfo類中winversion列舉型別的常量定義可知,其對應的作業系統恰好就是windows 10.

buildabi:我當前使用的qt是qt5.7 mingw版本,再結合windows x86結構總是小端,故輸出結果為"i386-little_endian-ilp32"

buildcpuarchitecture:分析如上

currentcpuarchitecture:我當前系統是windows 64位 專業版,故輸出 "x86_64"

kerneltype:眾所周知,桌面端winnt,移動端和嵌入式wince

kernelversion:剛才說了,windows 10

machinehostname:就是計算機名稱而已

prettyproductname、producttype、produceversion:產品的版本型別,windows 10

我上面對每個函式解釋的不同,請大家對照著輸出結果再理解一下每乙個函式的意思,也可以在自己電腦上執行該程式,檢視相應的輸出結果。

前端獲取作業系統 作業系統版本

在做埋點的過程中,遇到要上傳作業系統和作業系統版本的需求,如下 通過n igator.useragent獲取首先將作業系統確定為如下對映 all os 獲取當前作業系統 獲取當前作業系統 export const getos if useragent.includes mac else if use...

獲取作業系統型別

新增自定義型別,用作判斷系統型別,type tosversion osunknown,os95,os98,osme,osnt3,osnt4,os2k,osxp,os2k3 新增自定義函式過程 function getos tosversion 獲得系統型別,用來取得托盤控制代碼 varos tosv...

獲取作業系統資訊

osversioninfo osvi zeromemory osvi,sizeof osversioninfo osvi.dwosversioninfosize sizeof osversioninfo getversionex osvi 通過osvi這個結構體資訊來獲取作業系統資訊 typedef...