本页内容

QSysInfo Class

QSysInfo 类提供有关系统的信息。更多内容...

头文件: #include <QSysInfo>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

公共类型

enum Endian { BigEndian, LittleEndian, ByteOrder }
enum Sizes { WordSize }

静态公共成员

QByteArray bootUniqueId()
QString buildAbi()
QString buildCpuArchitecture()
QString currentCpuArchitecture()
QString kernelType()
QString kernelVersion()
QString machineHostName()
QByteArray machineUniqueId()
QString prettyProductName()
QString productType()
QString productVersion()

详细说明

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

某些常量仅在特定平台上定义。您可以使用预处理器符号Q_OS_WIN 和Q_OS_MACOS 来检测应用程序是在 Windows 还是 macOS 环境下编译的。

另请参阅 QLibraryInfo 。

成员类型文档

enum QSysInfo::Endian

常数值描述
QSysInfo::BigEndian0大端字节序(也称为网络字节序)
QSysInfo::LittleEndian1小端字节序
QSysInfo::ByteOrderBigEndian or LittleEndian根据平台的字节序,等于 BigEndian 或 LittleEndian。

enum QSysInfo::Sizes

此枚举提供了有关底层架构所用数据结构大小的平台特定信息。

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

成员函数文档

[static] QByteArray QSysInfo::bootUniqueId()

返回该机器本次启动的唯一标识符(如果能够确定的话)。如果无法确定唯一标识符,则该函数返回一个空字节数组。该值预计在每次启动后都会发生变化,可视为全局唯一的。

该函数目前仅在 Linux 和 Apple 操作系统上实现。

另请参阅 machineUniqueId()。

[static] QString QSysInfo::buildAbi()

返回 Qt 编译时所针对的完整体系结构字符串。该字符串有助于识别不同且不兼容的构建版本。例如,它可作为标识符,用于从服务器请求升级包。

该函数返回的值保持如下稳定性:结果中的必选组成部分在未来版本的 Qt 中不会改变,但可能会添加可选后缀。

返回值由三个或更多部分组成,各部分之间以连字符("-")分隔。这些部分包括:

组件值
CPU 架构与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()。

[static] 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()。

[static] QString QSysInfo::currentCpuArchitecture()

以文本格式返回应用程序所运行的 CPU 的架构。 请注意,该函数依赖于操作系统的报告结果;如果操作系统隐藏了相关信息或无法提供该信息,则可能无法检测到实际的 CPU 架构。例如,在 64 位 CPU 上运行的 32 位操作系统通常无法确定该 CPU 实际上是否具备运行 64 位程序的能力。

该函数返回的值大多是稳定的:系统将尽力确保这些值随时间保持恒定,并与buildCpuArchitecture() 返回的值一致。但是,由于所使用的操作系统函数的特性,可能会存在偏差。

典型的返回值包括(注:此列表并非详尽无遗):

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

另请参见 QSysInfo::buildAbi() 和QSysInfo::buildCpuArchitecture()。

[static] QString QSysInfo::kernelType()

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

该函数返回的值是稳定的,不会随时间变化,因此应用程序可以依赖该返回值作为标识符,但需注意,随着时间的推移可能会新增操作系统内核类型。

在 Windows 上,该函数返回 Windows 内核的类型,例如“winnt”。在 Unix 系统上,其返回值与uname -s 的输出结果相同(小写)。

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

另请参阅 QFileSelector 、kernelVersion()、productType()、productVersion() 以及prettyProductName()。

[static] QString QSysInfo::kernelVersion()

返回操作系统内核的发布版本。在 Windows 系统上,它返回 NT 内核的版本;在 Unix 系统(包括 Android 和 macOS)上,它返回的结果与 `uname -r ` 命令返回的结果相同;在 VxWorks 系统上,它返回 `kernelVersion()` 函数返回的字符串中的数字部分。

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

另请参阅 kernelType()、productType()、productVersion() 以及prettyProductName()。

[static] QString QSysInfo::machineHostName()

返回此机器的主机名(如果已配置)。请注意,无法保证主机名在全球范围内唯一,尤其是当它们是自动配置时。

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

此函数的返回结果与QHostInfo::localHostName() 相同。

另请参阅 QHostInfo::localDomainName 和machineUniqueId()。

[static] QByteArray QSysInfo::machineUniqueId()

返回该机器的唯一标识符(如果能够确定)。如果无法确定唯一标识符,则该函数返回一个空字节数组。与machineHostName()不同,该函数返回的值很可能在全球范围内是唯一的。

在网络操作中,唯一 ID 对于在较长时间内识别本机非常有用,尤其是在 IP 地址可能发生变化或本机可能拥有多个 IP 地址的情况下。例如,在与服务器通信时,或在共享网络存储中存储设备特定数据时,均可使用该 ID。

请注意,在某些系统上,该值会在重启后保留;而在某些系统上则不会。应用程序不应在未验证操作系统功能的情况下盲目依赖这一特性。特别是在 Linux 系统上,该 ID 通常是永久的,并且与 D-Bus 机器 ID 一致,但没有独立存储的节点(即复制节点)除外。

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

[static] QString QSysInfo::prettyProductName()

返回productType()和productVersion()的更美观版本,其中包含操作系统类型、代号及其他信息等其他标识符。该函数的返回结果适合展示给用户,但不适合长期存储,因为随着Qt XML的更新,该字符串可能会发生变化。

如果productType() 的返回值为“unknown”,则该函数将转而使用kernelType() 和kernelVersion() 函数。

另请参见 kernelType()、kernelVersion()、productType() 和productVersion()。

[static] QString QSysInfo::productType()

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

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

Linux 和 Android 注意事项:对于运行 Android 用户空间的 Linux 系统(尤其是使用 Bionic 库时),此函数将返回“android”。对于所有其他 Linux 系统,无论使用何种 C 库,它都会尝试确定发行版名称并返回该名称。如果无法确定发行版名称,则返回“unknown”。

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"

VxWorks 说明:此函数返回 "vxworks"

对于其他类 Unix 系统,该函数通常返回“unknown”。

另请参见 QFileSelector 、kernelType()、kernelVersion()、productVersion() 以及prettyProductName()。

[static] QString QSysInfo::productVersion()

返回操作系统的版本号(字符串形式)。如果无法确定版本,该函数将返回“unknown”。

该函数将在相应系统上返回 Android、iOS、macOS、VxWorks 和 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)
  • "24.03" (VxWorks 7 - 24.03)

在 Linux 系统上,该函数将尝试确定发行版版本并返回该版本号。在 Debian/kFreeBSD 系统上同样如此,因此在此情况下该函数将返回 Debian 版本号。

在所有其他类 Unix 系统中,该函数始终返回“unknown”。

注意: 该函数返回的版本字符串 不保证可排序。在 Linux 系统中,发行版的版本号可能会出现意外跳跃,请参阅发行版的文档了解其版本编号规范。

另请参阅 kernelType()、kernelVersion()、productType() 以及prettyProductName()。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.