QSysInfo 类

QSysInfo 类提供系统信息。 更多...

头文件 #include <QSysInfo>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

公共类型

枚举Endian { BigEndian, LittleEndian, ByteOrder }
枚举Sizes { WordSize }

静态公共成员

QByteArraybootUniqueId()
QStringbuildAbi()
QStringbuildCpuArchitecture()
QStringcurrentCpuArchitecture()
QStringkernelType()
QStringkernelVersion()
QStringmachineHostName()
QByteArraymachineUniqueId()
QStringprettyProductName()
QStringproductType()
QStringproductVersion()

详细说明

  • WordSize 指定编译应用程序的平台指针的大小。
  • ByteOrder 指定平台是大端还是小端。

某些常量仅在某些平台上定义。您可以使用预处理器符号 Q_OS_WINQ_OS_MACOS 来测试应用程序是在 Windows 或 macOS 下编译的。

另请参阅 QLibraryInfo

成员类型文档

enum QSysInfo::Endian

常量描述
QSysInfo::BigEndian0大端字节序(也称为网络字节序)
QSysInfo::LittleEndian1小端字节序
QSysInfo::ByteOrderBigEndian 或 LittleEndian等于 BigEndian 或 LittleEndian,具体取决于平台的字节序。

enum QSysInfo::Sizes

此枚举提供底层架构使用的特定于平台的数据结构大小的信息。

常量描述
QSysInfo::WordSize(sizeof(void *)<<3)编译应用程序的平台指针大小的位数(32 或 64)。

成员函数文档

[静态] QByteArray QSysInfo::bootUniqueId()

返回该机器启动的唯一 ID(如果可以确定)。如果无法确定唯一 ID,则此函数返回一个空字节数组。此值期望在每次启动后都会更改,可认为是全局唯一的。

此函数目前仅对 Linux 和 Apple 操作系统实现。

另请参阅 machineUniqueId()().

[静态] QString QSysInfo::buildAbi()

返回Qt编译的完整架构字符串。这个字符串对于识别不同的不兼容构建很有用。例如,它可以作为一个标识符从服务器请求升级包。

此函数返回的值保持稳定,如下所示:结果中必需的组件将不会在Qt的将来版本中更改,但可能会添加可选后缀。

返回的值由三部分或更多部分组成,它们通过破折号("-")分隔。它们是

组件
处理器架构QSysInfo::buildCpuArchitecture相同,例如 "arm"、 "i386"、 "mips" 或 "x86_64"
字节序"little_endian" 或 "big_endian"
字长是32位还是64位应用程序。可能的值包括:"llp64" (Windows 64位)、"lp64" (Unix 64位)、"ilp32" (32位)
(可选) ABI标识此架构中可能的不同的ABI的零个或多个组件。目前,Qt针对ARM和MIPS处理器提供了可选的ABI组件:一个组件是主要的ABI(如 "eabi"、"o32"、"n32"、"o64");另一个是调用约定是否使用硬件浮点寄存器("hardfloat" 存在)。

此外,如果Qt配置了 -qreal float,ABI选项标签 "qreal_float" 将存在。如果Qt配置了作为qreal的另一个类型,则该类型位于 "qreal_" 之后,所有非字母和数字字符均由下划线转义,后跟两个十六进制数字。例如,-qreal long double 变为 "qreal_long_20double"。

另请参阅 QSysInfo::buildCpuArchitecture

[静态] QString QSysInfo::buildCpuArchitecture()

返回Qt编译的CPU架构,以文本格式表示。请注意,如果存在模拟层或CPU支持多个架构(如支持i386应用程序的x86-64处理器),则此值可能不匹配应用程序实际运行的CPU。要检测这一点,请使用currentCpuArchitecture

此函数返回的值是稳定的,并且不会随时间变化,因此应用程序可以将返回的值作为标识符依赖,除非随着时间的推移添加了新的CPU类型。

典型的返回值包括(注意:列表不完整)

  • "arm"
  • "arm64"
  • "i386"
  • "ia64"
  • "mips"
  • "mips64"
  • "power"
  • "power64"
  • "sparc"
  • "sparcv9"
  • "x86_64"

另请参阅 QSysInfo::buildAbi() 和 QSysInfo::currentCpuArchitecture

[静态] QString QSysInfo::currentCpuArchitecture()

以文本格式返回应用程序正在运行的CPU架构。请注意,此函数取决于操作系统将报告的内容,并且如果操作系统隐藏了该信息或无法提供该信息,则可能无法检测到实际的CPU架构。例如,在64位CPU上运行的32位操作系统通常无法确定CPU实际上能够运行64位程序。

此函数返回的值主要稳定:将努力确保它们随时间保持恒定并匹配QSysInfo::buildCpuArchitecture()返回的值。但是,由于使用的操作系统函数的性质,可能会有差异。

典型的返回值包括(注意:列表不完整)

  • "arm"
  • "arm64"
  • "i386"
  • "ia64"
  • "mips"
  • "mips64"
  • "power"
  • "power64"
  • "sparc"
  • "sparcv9"
  • "x86_64"

另请参阅 QSysInfo::buildAbi() 和 QSysInfo::buildCpuArchitecture

[静态] QString QSysInfo::kernelType()

返回 Qt 编译时所使用的操作系统内核类型。这也将是应用程序运行在上的内核,除非主机操作系统正在运行兼容性或虚拟化层。

该函数返回的值是稳定的,并且不会随时间改变,因此应用程序可以将返回的值作为标识符依赖,除非新操作系统内核类型可能随时间添加。

在 Windows 上,此函数返回 Windows 内核的类型,例如 "winnt"。在 Unix 系统上,它返回与 uname -s 的输出相同(小写)。

注意:此函数可能返回令人惊讶的值:对于所有运行 Linux 的操作系统(包括 Android)返回 "linux",对于所有运行 QNX 的操作系统返回 "qnx",对于 Debian/kFreeBSD 返回 "freebsd",对于 macOS 和 iOS 返回 "darwin"。有关应用程序运行的产品类型的信息,请参阅 productType

另请参阅 QFileSelectorkernelVersion(),productType(),productVersion() 和 prettyProductName

[静态] QString QSysInfo::kernelVersion()

返回操作系统内核的发布版本。在 Windows 上,它返回 NT 内核的版本。在包括 Android 和 macOS 在内的 Unix 系统上,它返回与 uname -r 命令的输出相同。

如果无法确定版本,则此函数可能返回一个空字符串。

另请参阅 kernelTypeproductTypeproductVersionprettyProductName

[静态] QByteArray QSysInfo::machineHostName()

如果配置了主机名,则返回本机的名称。请注意,主机名可能不是全局唯一的,特别是在自动配置的情况下。

此函数不保证返回的主机名是完整限定域名(FQDN)。为此,请使用 QHostInfo 将返回的名称解析为 FQDN。

此函数返回的与 QHostInfo::localHostName 相同。

另请参阅 QHostInfo::localDomainNamemachineUniqueId

[静态] QByteArray QSysInfo::machineUniqueId()

如果可以确定,则返回本机的唯一 ID。如果不能确定唯一 ID,则此函数返回一个空字节数组。与 machineHostName 相反,此函数返回的值可能是全局唯一的。

在通过网络操作识别这台机器以长时间进行通信、IP 地址可能更改或这台机器可能有多个 IP 地址的情况下,唯一的 ID 很有用。例如,当与服务器通信或将设备特定的数据存储在共享网络存储中时,可以使用此 ID。

请注意,在某些系统上,此值会在重启后持续存在,而在某些系统上则不会。应用程序不应在没有验证操作系统能力的情况下盲目依赖于这一事实。特别是在Linux系统上,此ID通常是永久的,并且它与D-Bus机器ID相匹配,除非是没有任何存储的节点(复制的节点)。

另请参阅 machineHostName() 和 bootUniqueId()。

[静态] QString QSysInfo::prettyProductName()

返回 productType() 和 productVersion() 的更美观形式,包含其他令牌,如操作系统类型、代号和其他信息。此函数的结果适用于显示给用户,但不适用于长期存储,因为字符串可能会随着Qt的更新而改变。

如果 productType() 为 "未知",则此函数将改用 kernelType() 和 kernelVersion() 函数。

另请参阅 kernelType(),kernelVersion(),productType() 和 productVersion()。

[静态] QString QSysInfo::productType()

返回此应用程序运行的操作系统产品名称。如果此应用程序在某种类型的模拟或虚拟化层(例如Unix系统上的WINE)上运行,则该函数将检查模拟/虚拟化层。

此函数返回的值是稳定的,不会随时间而改变,因此应用程序可以将其作为标识符依赖,但请注意,随着时间的推移可能会添加新的操作系统类型。

Linux和Android说明:对于运行Android用户空间的Linux系统,包括使用Bionic库的情况,此函数返回 "android"。对于所有其他Linux系统,无论使用哪种C库,它都会尝试确定发行版名称并返回该名称。如果确定发行版名称失败,则返回 "未知"。

macOS说明:对于所有macOS系统,无论Apple的命名惯例如何,此函数返回 "macos"。在Qt 5中,它返回 "osx",同样无视Apple的命名惯例。

Darwin、iOS、tvOS和watchOS说明:对于iOS系统,此函数返回 "ios",对于tvOS系统返回 "tvos",对于watchOS系统返回 "watchos",如果无法确定系统,则返回 "darwin"。

FreeBSD说明:此函数对于Debian/kFreeBSD返回 "debian",否则返回 "unknown"。

Windows说明:此函数返回 "windows"。

对于其他Unix型系统,此函数通常返回 "unknown"。

另请参阅 QFileSelectorkernelType(),kernelVersion(),productVersion() 和 prettyProductName()。

[静态] QString QSysInfo::productVersion()

以字符串形式返回操作系统的产品版本。如果无法确定版本,此函数返回 "unknown"。

在那些系统上,它将返回Android、iOS、macOS和Windows的完整产品版本。

典型的返回值包括(注意:列表不完整)

  • "12"(Android 12)
  • "36"(Fedora 36)
  • "15.5"(iOS 15.5)
  • "12.4"(macOS Monterey)
  • "22.04"(Ubuntu 22.04)
  • "8.6"(watchOS 8.6)
  • "11"(Windows 11)
  • "Server 2022"(Windows Server 2022)

在Linux系统上,它将尝试确定发行版本并返回该版本。在Debian/kFreeBSD上也这样做,因此在这种情况下此函数将返回Debian版本。

在其他所有Unix类型系统上,此函数总是返回“未知”。

注意:此函数返回的版本字符串不保证可排序。在Linux上,发行版本的编号可能会有意外的跳跃,请参阅发行版的文档以了解版本化实践。

另请参阅:kernelType(),kernelVersion(),productType()和prettyProductName()。

© 2024 Qt公司有限公司。本文件中所包含的文档贡献归其各自所有者所有。本文件提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3许可的。Qt及各自标志是芬兰及/或其他国家Qt公司有限公司的商标。所有其他商标均为其各自所有者财产。