QOperatingSystemVersion Class

The QOperatingSystemVersion class provides information about the operating system version. More...

Header: #include <QOperatingSystemVersion>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: QOperatingSystemVersionBase

Public Types

enum OSType { Android, IOS, MacOS, TvOS, WatchOS, …, Unknown }

Public Functions

QOperatingSystemVersion(QOperatingSystemVersion::OSType osType, int vmajor, int vminor = -1, int vmicro = -1)
bool isAnyOfType(std::initializer_list<QOperatingSystemVersion::OSType> types) const
int majorVersion() const
int microVersion() const
int minorVersion() const
QString name() const
int segmentCount() const
QOperatingSystemVersion::OSType type() const
(since 6.1) QVersionNumber version() const

Static Public Members

(since 6.1) const QOperatingSystemVersion Android10
(since 6.1) const QOperatingSystemVersion Android11
(since 6.5) const QOperatingSystemVersionBase Android12
(since 6.5) const QOperatingSystemVersionBase Android13
(since 6.5) const QOperatingSystemVersionBase Android12L
const QOperatingSystemVersion AndroidJellyBean
const QOperatingSystemVersion AndroidJellyBean_MR1
const QOperatingSystemVersion AndroidJellyBean_MR2
const QOperatingSystemVersion AndroidKitKat
const QOperatingSystemVersion AndroidLollipop
const QOperatingSystemVersion AndroidLollipop_MR1
const QOperatingSystemVersion AndroidMarshmallow
const QOperatingSystemVersion AndroidNougat
const QOperatingSystemVersion AndroidNougat_MR1
const QOperatingSystemVersion AndroidOreo
(since 6.1) const QOperatingSystemVersion AndroidOreo_MR1
(since 6.1) const QOperatingSystemVersion AndroidPie
(since 6.0) const QOperatingSystemVersion MacOSBigSur
const QOperatingSystemVersion MacOSCatalina
const QOperatingSystemVersion MacOSHighSierra
const QOperatingSystemVersion MacOSMojave
(since 6.3) const QOperatingSystemVersion MacOSMonterey
const QOperatingSystemVersion MacOSSierra
(since 6.4) const QOperatingSystemVersionBase MacOSVentura
const QOperatingSystemVersion OSXElCapitan
const QOperatingSystemVersion OSXMavericks
const QOperatingSystemVersion OSXYosemite
const QOperatingSystemVersion Windows7
const QOperatingSystemVersion Windows8
const QOperatingSystemVersion Windows10
(since 6.3) const QOperatingSystemVersionBase Windows11
(since 6.3) const QOperatingSystemVersionBase Windows10_1809
(since 6.3) const QOperatingSystemVersionBase Windows10_1903
(since 6.3) const QOperatingSystemVersionBase Windows10_1909
(since 6.3) const QOperatingSystemVersionBase Windows10_20H2
(since 6.3) const QOperatingSystemVersionBase Windows10_2004
(since 6.3) const QOperatingSystemVersionBase Windows10_21H1
(since 6.3) const QOperatingSystemVersionBase Windows10_21H2
(since 6.5) const QOperatingSystemVersionBase Windows10_22H2
(since 6.4) const QOperatingSystemVersionBase Windows11_21H2
(since 6.4) const QOperatingSystemVersionBase Windows11_22H2
const QOperatingSystemVersion Windows8_1
QOperatingSystemVersion current()
QOperatingSystemVersion::OSType currentType()

Detailed Description

Unlike other version functions in QSysInfo, QOperatingSystemVersion provides access to the full version number that developers typically use to vary behavior or determine whether to enable APIs or features based on the operating system version (as opposed to the kernel version number or marketing version).

Presently, Android, Apple Platforms (iOS, macOS, tvOS, watchOS, and visionOS), and Windows are supported.

The majorVersion(), minorVersion(), and microVersion() functions return the parts of the operating system version number based on:

PlatformsValue
Androidresult of parsing android.os.Build.VERSION.RELEASE using QVersionNumber, with a fallback to android.os.Build.VERSION.SDK_INT to determine the major and minor version component if the former fails
Apple PlatformsmajorVersion, minorVersion, and patchVersion from NSProcessInfo.operatingSystemVersion
WindowsdwMajorVersion, dwMinorVersion, and dwBuildNumber from RtlGetVersion - note that this function ALWAYS return the version number of the underlying operating system, as opposed to the shim underneath GetVersionEx that hides the real version number if the application is not manifested for that version of the OS

Because QOperatingSystemVersion stores both a version number and an OS type, the OS type can be taken into account when performing comparisons. For example, on a macOS system running macOS Sierra (v10.12), the following expression will return false even though the major version number component of the object on the left hand side of the expression (10) is greater than that of the object on the right (9):

     QOperatingSystemVersion::current() >= QOperatingSystemVersion(QOperatingSystemVersion::IOS, 9)

This allows expressions for multiple operating systems to be joined with a logical OR operator and still work as expected. For example:

     auto current = QOperatingSystemVersion::current();
     if (current >= QOperatingSystemVersion::OSXYosemite ||
         current >= QOperatingSystemVersion(QOperatingSystemVersion::IOS, 8)) {
         // returns true on macOS >= 10.10 and iOS >= 8.0, but false on macOS < 10.10 and iOS < 8.0
     }

A more naive comparison algorithm might incorrectly return true on all versions of macOS, including Mac OS 9. This behavior is achieved by overloading the comparison operators to return false whenever the OS types of the QOperatingSystemVersion instances being compared do not match. Be aware that due to this it can be the case x >= y and x < y are BOTH false for the same instances of x and y.

Member Type Documentation

enum QOperatingSystemVersion::OSType

This enum provides symbolic names for the various operating system families supported by QOperatingSystemVersion.

ConstantValueDescription
QOperatingSystemVersion::Android6The Google Android operating system.
QOperatingSystemVersion::IOS3The Apple iOS operating system.
QOperatingSystemVersion::MacOS2The Apple macOS operating system.
QOperatingSystemVersion::TvOS4The Apple tvOS operating system.
QOperatingSystemVersion::WatchOS5The Apple watchOS operating system.
QOperatingSystemVersion::VisionOS7The Apple visionOS operating system.
QOperatingSystemVersion::Windows1The Microsoft Windows operating system.
QOperatingSystemVersion::Unknown0An unknown or unsupported operating system.

Member Function Documentation

[constexpr] QOperatingSystemVersion::QOperatingSystemVersion(QOperatingSystemVersion::OSType osType, int vmajor, int vminor = -1, int vmicro = -1)

Constructs a QOperatingSystemVersion consisting of the OS type osType, and major, minor, and micro version numbers vmajor, vminor and vmicro, respectively.

[static] QOperatingSystemVersion QOperatingSystemVersion::current()

Returns a QOperatingSystemVersion indicating the current OS and its version number.

See also currentType().

[static constexpr] QOperatingSystemVersion::OSType QOperatingSystemVersion::currentType()

Returns the current OS type without constructing a QOperatingSystemVersion instance.

See also current().

bool QOperatingSystemVersion::isAnyOfType(std::initializer_list<QOperatingSystemVersion::OSType> types) const

Returns whether the OS type identified by the QOperatingSystemVersion matches any of the OS types in types.

[constexpr] int QOperatingSystemVersion::majorVersion() const

Returns the major version number, that is, the first segment of the operating system's version number.

See the main class documentation for what the major version number is on a given operating system.

-1 indicates an unknown or absent version number component.

See also version(), minorVersion(), and microVersion().

[constexpr] int QOperatingSystemVersion::microVersion() const

Returns the micro version number, that is, the third segment of the operating system's version number.

See the main class documentation for what the micro version number is on a given operating system.

-1 indicates an unknown or absent version number component.

See also version(), majorVersion(), and minorVersion().

[constexpr] int QOperatingSystemVersion::minorVersion() const

Returns the minor version number, that is, the second segment of the operating system's version number.

See the main class documentation for what the minor version number is on a given operating system.

-1 indicates an unknown or absent version number component.

See also version(), majorVersion(), and microVersion().

QString QOperatingSystemVersion::name() const

Returns a string representation of the OS type identified by the QOperatingSystemVersion.

See also type().

[constexpr] int QOperatingSystemVersion::segmentCount() const

Returns the number of integers stored in the version number.

[constexpr] QOperatingSystemVersion::OSType QOperatingSystemVersion::type() const

Returns the OS type identified by the QOperatingSystemVersion.

See also name().

[since 6.1] QVersionNumber QOperatingSystemVersion::version() const

Returns the operating system's version number.

See the main class documentation for what the version number is on a given operating system.

This function was introduced in Qt 6.1.

See also majorVersion(), minorVersion(), and microVersion().

Member Variable Documentation

[since 6.1] const QOperatingSystemVersion QOperatingSystemVersion::Android10

This variable holds a version corresponding to Android 10 (version 10.0, API level 29).

This documentation was introduced in Qt 6.1.

[since 6.1] const QOperatingSystemVersion QOperatingSystemVersion::Android11

This variable holds a version corresponding to Android 11 (version 11.0, API level 30).

This documentation was introduced in Qt 6.1.

[since 6.5] const QOperatingSystemVersionBase QOperatingSystemVersion::Android12

This variable holds a version corresponding to Android 12 (version 12.0, API level 31).

This documentation was introduced in Qt 6.5.

[since 6.5] const QOperatingSystemVersionBase QOperatingSystemVersion::Android13

This variable holds a version corresponding to Android 13 (version 13.0, API level 33).

This documentation was introduced in Qt 6.5.

[since 6.5] const QOperatingSystemVersionBase QOperatingSystemVersion::Android12L

This variable holds a version corresponding to Android 12L (version 12.0, API level 32).

This documentation was introduced in Qt 6.5.

const QOperatingSystemVersion QOperatingSystemVersion::AndroidJellyBean

This variable holds a version corresponding to Android Jelly Bean (version 4.1, API level 16).

const QOperatingSystemVersion QOperatingSystemVersion::AndroidJellyBean_MR1

This variable holds a version corresponding to Android Jelly Bean, maintenance release 1 (version 4.2, API level 17).

const QOperatingSystemVersion QOperatingSystemVersion::AndroidJellyBean_MR2

This variable holds a version corresponding to Android Jelly Bean, maintenance release 2 (version 4.3, API level 18).

const QOperatingSystemVersion QOperatingSystemVersion::AndroidKitKat

This variable holds a version corresponding to Android KitKat (versions 4.4 & 4.4W, API levels 19 & 20).

const QOperatingSystemVersion QOperatingSystemVersion::AndroidLollipop

This variable holds a version corresponding to Android Lollipop (version 5.0, API level 21).

const QOperatingSystemVersion QOperatingSystemVersion::AndroidLollipop_MR1

This variable holds a version corresponding to Android Lollipop, maintenance release 1 (version 5.1, API level 22).

const QOperatingSystemVersion QOperatingSystemVersion::AndroidMarshmallow

This variable holds a version corresponding to Android Marshmallow (version 6.0, API level 23).

const QOperatingSystemVersion QOperatingSystemVersion::AndroidNougat

This variable holds a version corresponding to Android Nougat (version 7.0, API level 24).

const QOperatingSystemVersion QOperatingSystemVersion::AndroidNougat_MR1

This variable holds a version corresponding to Android Nougat, maintenance release 1 (version 7.0, API level 25).

const QOperatingSystemVersion QOperatingSystemVersion::AndroidOreo

This variable holds a version corresponding to Android Oreo (version 8.0, API level 26).

[since 6.1] const QOperatingSystemVersion QOperatingSystemVersion::AndroidOreo_MR1

This variable holds a version corresponding to Android Oreo_MR1 (version 8.1, API level 27).

This documentation was introduced in Qt 6.1.

[since 6.1] const QOperatingSystemVersion QOperatingSystemVersion::AndroidPie

This variable holds a version corresponding to Android Pie (version 9.0, API level 28).

This documentation was introduced in Qt 6.1.

[since 6.0] const QOperatingSystemVersion QOperatingSystemVersion::MacOSBigSur

This variable holds a version corresponding to macOS Big Sur (version 11).

This documentation was introduced in Qt 6.0.

const QOperatingSystemVersion QOperatingSystemVersion::MacOSCatalina

This variable holds a version corresponding to macOS Catalina (version 10.15).

const QOperatingSystemVersion QOperatingSystemVersion::MacOSHighSierra

This variable holds a version corresponding to macOS High Sierra (version 10.13).

const QOperatingSystemVersion QOperatingSystemVersion::MacOSMojave

This variable holds a version corresponding to macOS Mojave (version 10.14).

[since 6.3] const QOperatingSystemVersion QOperatingSystemVersion::MacOSMonterey

This variable holds a version corresponding to macOS Monterey (version 12).

This documentation was introduced in Qt 6.3.

const QOperatingSystemVersion QOperatingSystemVersion::MacOSSierra

This variable holds a version corresponding to macOS Sierra (version 10.12).

[since 6.4] const QOperatingSystemVersionBase QOperatingSystemVersion::MacOSVentura

This variable holds a version corresponding to macOS Ventura (version 13).

This documentation was introduced in Qt 6.4.

const QOperatingSystemVersion QOperatingSystemVersion::OSXElCapitan

This variable holds a version corresponding to OS X El Capitan (version 10.11).

const QOperatingSystemVersion QOperatingSystemVersion::OSXMavericks

This variable holds a version corresponding to OS X Mavericks (version 10.9).

const QOperatingSystemVersion QOperatingSystemVersion::OSXYosemite

This variable holds a version corresponding to OS X Yosemite (version 10.10).

const QOperatingSystemVersion QOperatingSystemVersion::Windows7

This variable holds a version corresponding to Windows 7 (version 6.1).

const QOperatingSystemVersion QOperatingSystemVersion::Windows8

This variable holds a version corresponding to Windows 8 (version 6.2).

const QOperatingSystemVersion QOperatingSystemVersion::Windows10

This variable holds a version corresponding to general Windows 10 (version 10.0).

[since 6.3] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows11

This variable holds a version corresponding to the initial release of Windows 11 (version 10.0.22000).

This documentation was introduced in Qt 6.3.

[since 6.3] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_1809

This variable holds a version corresponding to Windows 10 October 2018 Update Version 1809 (version 10.0.17763).

This documentation was introduced in Qt 6.3.

[since 6.3] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_1903

This variable holds a version corresponding to Windows 10 May 2019 Update Version 1903 (version 10.0.18362).

This documentation was introduced in Qt 6.3.

[since 6.3] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_1909

This variable holds a version corresponding to Windows 10 November 2019 Update Version 1909 (version 10.0.18363).

This documentation was introduced in Qt 6.3.

[since 6.3] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_20H2

This variable holds a version corresponding to Windows 10 October 2020 Update Version 20H2 (version 10.0.19042).

This documentation was introduced in Qt 6.3.

[since 6.3] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_2004

This variable holds a version corresponding to Windows 10 May 2020 Update Version 2004 (version 10.0.19041).

This documentation was introduced in Qt 6.3.

[since 6.3] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_21H1

This variable holds a version corresponding to Windows 10 May 2021 Update Version 21H1 (version 10.0.19043).

This documentation was introduced in Qt 6.3.

[since 6.3] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_21H2

This variable holds a version corresponding to Windows 10 November 2021 Update Version 21H2 (version 10.0.19044).

This documentation was introduced in Qt 6.3.

[since 6.5] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_22H2

This variable holds a version corresponding to Windows 10 October 2022 Update Version 22H2 (version 10.0.19045).

This documentation was introduced in Qt 6.5.

[since 6.4] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows11_21H2

This variable holds a version corresponding to Windows 11 Version 21H2 (version 10.0.22000).

This documentation was introduced in Qt 6.4.

[since 6.4] const QOperatingSystemVersionBase QOperatingSystemVersion::Windows11_22H2

This variable holds a version corresponding to Windows 11 Version 22H2 (version 10.0.22621).

This documentation was introduced in Qt 6.4.

const QOperatingSystemVersion QOperatingSystemVersion::Windows8_1

This variable holds a version corresponding to Windows 8.1 (version 6.3).