博客
关于我
QSysInfo获取操作系统的相关信息
阅读量:550 次
发布时间:2019-03-09

本文共 2680 字,大约阅读时间需要 8 分钟。

QSysInfo类可以为我们提供一些有关当前系统的底层信息。其中包括:

  • WordSize:代表编译应用程序的当前系统的指针大小
  • ByteOrder:代表当前系统是大端还是小端
  • WindowsVersion:代表当前运行应用程序的Windows系统的版本
  • MacintoshVersion:代表当前运行应用程序的Mac系统的版本
注意,该类中所提供的常量定义,有一些只在特定平台上有效。所以,我们在使用时,可以先使用Qt预定义的符号Q_OS_WIN和Q_OS_OSX来判断一下,当前应用程序是在哪个系统下编译的。
至于该类的使用方法,和我们之前讲过的QStorageInfo类似,其成员函数均为静态方法,我们可以很方便的使用。

[cpp] 
 
  1. 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

[cpp] 
 
  1. QString QSysInfo::buildCpuArchitecture()  
返回编译Qt程序的CPU架构。注意,这可能和Qt程序实际运行的CPU不同,因为可能存在仿真层或该CPU支持多个架构。
通常的返回值如下:
  • arm
  • arm64
  • i386
  • ia64
  • mips
  • mips64
  • power
  • power64
  • sparc
  • sparcv9
  • x86_64
[cpp] 
 
  1. QString QSysInfo::currentCpuArchitecture()  
返回Qt程序当前所运行在的CPU架构。和上面的那个函数相对应。

[cpp] 
 
  1. QString QSysInfo::kernelType()  
  2. QString QSysInfo::kernelVersion()  
返回编译Qt程序的操作系统的内核的类型和版本号。在Windows平台上,该函数返回"wince" 或者 "winnt" 及其版本;在Unix平台上,该函数的返回值和命令 "uname -rs"的返回值一样。

[cpp] 
 
  1. QString QSysInfo::prettyProductName()  
  2. QString QSysInfo::productType()  
  3. QString QSysInfo::productVersion()  
返回当前运行Qt程序的操作系统的产品名称和产品的版本。


下面我们就以当前的Windows系统为例,来说明一下这些函数的使用及其含义:

[cpp] 
 
  1. #include <QCoreApplication>  
  2. #include <QSysInfo>  
  3. #include <QDebug>  
  4.   
  5. int main(int argc, char *argv[])  
  6. {  
  7.     QCoreApplication a(argc, argv);  
  8.   
  9.     qDebug() << "WindowsVersion: " << QSysInfo::WindowsVersion;  
  10.     qDebug() << "buildAbi: " << QSysInfo::buildAbi();  
  11.     qDebug() << "buildCpuArchitecture: " << QSysInfo::buildCpuArchitecture();  
  12.     qDebug() << "currentCpuArchitecture: " << QSysInfo::currentCpuArchitecture();  
  13.     qDebug() << "kernelType: " << QSysInfo::kernelType();  
  14.     qDebug() << "kernelVersion: " << QSysInfo::kernelVersion();  
  15.     qDebug() << "machineHostName: " << QSysInfo::machineHostName();  
  16.     qDebug() << "prettyProductName: " << QSysInfo::prettyProductName();  
  17.     qDebug() << "productType: " << QSysInfo::productType();  
  18.     qDebug() << "productVersion: " << QSysInfo::productVersion();  
  19.     qDebug() << "Windows Version: " << QSysInfo::windowsVersion();  
  20.   
  21.     return a.exec();  
  22. }  
输出结果如下图:


我们还分析一下各个输出结果的含义,有助于我们理解上面讲到的函数的意思:
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

我上面对每个函数解释的不同,请大家对照着输出结果再理解一下每一个函数的意思,也可以在自己电脑上运行该程序,查看相应的输出结果。
判断当前系统是不是Win7:
if (QSysInfo::WindowsVersion == QSysInfo::WV_WINDOWS7){        ........}

原文链接:

你可能感兴趣的文章
mysql server has gone away
查看>>
mysql skip-grant-tables_MySQL root用户忘记密码怎么办?修改密码方法:skip-grant-tables
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
MYSQL sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql sysbench测试安装及命令
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
MySQL Troubleshoting:Waiting on query cache mutex
查看>>
mysql union orderby 无效
查看>>
mysql v$session_Oracle 进程查看v$session
查看>>
mysql where中如何判断不为空
查看>>
MySQL Workbench 使用手册:从入门到精通
查看>>
MySQL Workbench 数据库建模详解:从设计到实践
查看>>
MySQL Workbench 数据建模全解析:从基础到实践
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>