<QtTypes> - Qt Type Declarations

<QtTypes> 头文件包含 Qt 基本类型声明。更多

Header: #include <QtTypes>

类型

(since 6.2)
(since 6.2)
(since 6.2)
(since 6.2)
(since 6.2) PRIXQUINTPTR
(since 6.2) PRIdQINTPTR
(since 6.2) PRIdQPTRDIFF
(since 6.2) PRIdQSIZETYPE
(since 6.2) PRIiQINTPTR
(since 6.2) PRIiQPTRDIFF
(since 6.2) PRIiQSIZETYPE
(since 6.2) PRIoQUINTPTR
(since 6.2) PRIuQUINTPTR
(since 6.2) PRIxQUINTPTR
(since 6.6) QT_SUPPORTS_INT128
(since 6.6) qint128 Q_INT128_C(literal)
(since 6.6) Q_INT128_MAX
(since 6.6) Q_INT128_MIN
qint64 Q_INT64_C(literal)
(since 6.6) quint128 Q_UINT128_C(literal)
(since 6.6) Q_UINT128_MAX
quint64 Q_UINT64_C(literal)

详细说明

该头文件声明了多个类型定义,这些类型在 Qt 支持的所有平台上保证了各种基本类型的指定位大小,例如qint8 ,它是一个带符号的字符,在 Qt 支持的所有平台上保证为 8 位。头文件还为long long int 声明了qlonglong 类型定义。

头文件还声明了几个方便类型定义:qreal ,用于doublefloatuchar ,用于unsigned charuint ,用于unsigned intulong ,用于unsigned longushort ,用于unsigned short

头文件还提供了一系列宏,使得通过 printf() 或qDebug() 等格式化输出工具打印某些 Qt 类型别名(qsizetype、qintptr 等)成为可能,而不会引发格式化警告,也无需类型转换。

类型文档

qint8

用于signed char 的类型定义。在 Qt 支持的所有平台上,该类型保证为 8 位。

qint16

用于signed short 的类型定义。在 Qt 支持的所有平台上,该类型保证为 16 位。

qint32

用于signed int 的类型定义。该类型保证在 Qt 支持的所有平台上都是 32 位的。

qint64

用于long long int 的类型定义。该类型保证在 Qt 支持的所有平台上都是 64 位的。

可使用Q_INT64_C() 宏创建该类型的字面量:

qint64 value = Q_INT64_C(932838457459459);

另请参阅 Q_INT64_C(),quint64, 和qlonglong

[since 6.6] qint128

类型定义,用于在支持__int128 的平台上(如果是这种情况,Qt XML 定义了QT_SUPPORTS_INT128 这个宏)。

可使用Q_INT128_C() 宏创建该类型的字面量。

该类型定义在 Qt 6.6 中引入。

另请参阅 Q_INT128_C(),Q_INT128_MIN,Q_INT128_MAX,quint128, 和QT_SUPPORTS_INT128

qintptr

用有符号整数表示指针的整数类型(用于散列等)。

类型定义为 qint32 或 qint64。在 Qt 支持的所有平台上,该类型保证与指针大小相同。在使用 32 位指针的系统上,qintptr 是 qint32 的类型定义;在使用 64 位指针的系统上,qintptr 是 qint64 的类型定义。

请注意,qintptr 是有符号的。对于无符号值,请使用 quintptr。

为了使用格式化输出工具(如printf(),qDebug(),QString::asprintf() 等)打印这种类型的值,可以使用PRIdQINTPTRPRIiQINTPTR 宏作为格式指定器。它们都会将数值打印为基数为 10 的数字。

qintptr p = 123;
printf("The pointer is %" PRIdQINTPTR "\n", p);

另请参阅 qptrdiff,qint32, 和qint64

qlonglong

long long int 的类型定义(Windows 上为__int64 )。这与qint64 相同。

另请参见 qulonglongqint64

qptrdiff

表示指针差异的整数类型。

类型定义为 qint32 或 qint64。在 Qt 支持的所有平台上,该类型保证与指针大小相同。在使用 32 位指针的系统上,quintptr 是 quint32 的类型定义;在使用 64 位指针的系统上,quintptr 是 quint64 的类型定义。

请注意,qptrdiff 是有符号的。对于无符号值,请使用 quintptr。

为了使用格式化输出工具(如printf(),qDebug(),QString::asprintf() 等)打印这种类型的值,可以使用PRIdQPTRDIFFPRIiQPTRDIFF 宏作为格式指定器。它们都会将数值打印为基数为 10 的数字。

qptrdiff d = 123;
printf("The difference is %" PRIdQPTRDIFF "\n", d);

另请参阅 quintptr,qint32, 和qint64

qreal

用于double 的类型定义,除非 Qt XML 配置了-qreal float 选项。

[alias] qsizetype

为所有平台提供 Posix'ssize_t 的积分类型。

在 Qt 支持的所有平台上,该类型保证与size_t 大小相同。

请注意,qsizetype 是有符号的。对于无符号值,请使用size_t

为了使用格式化输出工具(如printf(),qDebug(),QString::asprintf() 等)打印这种类型的值,可以使用PRIdQSIZETYPEPRIiQSIZETYPE 宏作为格式指定器。它们都将以 10 为基数打印数值。

qsizetype s = 123;
printf("The size is %" PRIdQSIZETYPE "\n", s);

另请参见 qptrdiff

quint8

用于unsigned char 的类型定义。在 Qt 支持的所有平台上,该类型保证为 8 位。

quint16

用于unsigned short 的类型定义。在 Qt 支持的所有平台上,该类型保证为 16 位。

quint32

用于unsigned int 的类型定义。该类型保证在 Qt 支持的所有平台上都是 32 位的。

quint64

用于unsigned long long int 的类型定义。该类型保证在 Qt 支持的所有平台上都是 64 位的。

可使用Q_UINT64_C() 宏创建该类型的字面量:

quint64 value = Q_UINT64_C(932838457459459);

另请参阅 Q_UINT64_C(),qint64, 和qulonglong

[since 6.6] quint128

类型定义,用于在支持unsigned __int128 的平台上(如果是这种情况,Qt XML 定义了QT_SUPPORTS_INT128 这个宏)。

可使用Q_UINT128_C() 宏创建该类型的字面量。

该类型定义在 Qt 6.6 中引入。

另请参阅 Q_UINT128_C(),Q_UINT128_MAX,qint128, 和QT_SUPPORTS_INT128

quintptr

以无符号整数表示指针的整数类型(用于散列等)。

类型定义为 quint32 或 quint64。在 Qt 支持的所有平台上,该类型保证与指针大小相同。在使用 32 位指针的系统上,quintptr 是 quint32 的类型定义;在使用 64 位指针的系统上,quintptr 是 quint64 的类型定义。

请注意,quintptr 是无符号的。对于有符号值,请使用 qptrdiff。

为了使用格式化输出工具(如printf(),qDebug(),QString::asprintf() 等)打印这种类型的值,可以使用以下宏作为格式指定符:

  • PRIuQUINTPTR以 10 为基数打印数值。
  • PRIoQUINTPTR以 8 为基数打印数值。
  • PRIxQUINTPTR:使用小写字母a-f 将数值打印为基数 16 的数字。
  • PRIXQUINTPTR:使用大写字母A-F 将数值打印为基数 16 的数字。
quintptr p = 123u;
printf("The pointer value is 0x%" PRIXQUINTPTR "\n", p);

另请参阅 qptrdiff,quint32, 和quint64

qulonglong

unsigned long long int 的类型定义(Windows 上为unsigned __int64 )。这与quint64 相同。

另请参见 quint64qlonglong

uchar

unsigned char 的便捷类型定义。

uint

unsigned int 的便捷类型定义。

ulong

unsigned long 的便捷类型定义。

ushort

unsigned short 的便利类型定义。

宏文档

[since 6.2] PRIdQINTPTR

[since 6.2] PRIiQINTPTR

请参见qintptr

此函数在 Qt 6.2 中引入。

[since 6.2] PRIXQUINTPTR

[since 6.2] PRIoQUINTPTR

[since 6.2] PRIuQUINTPTR

[since 6.2] PRIxQUINTPTR

参见 quintptr。

此函数在 Qt 6.2 中引入。

[since 6.2] PRIdQPTRDIFF

[since 6.2] PRIiQPTRDIFF

请参见 qptrdiff。

此函数在 Qt 6.2 中引入。

[since 6.2] PRIdQSIZETYPE

[since 6.2] PRIiQSIZETYPE

请参见 qsizetype。

此函数在 Qt 6.2 中引入。

[since 6.6] QT_SUPPORTS_INT128

如果平台支持 128 位整数类型,Qt XML 将定义此宏以及qint128quint128 类型。

该宏在 Qt 6.6 中引入。

另请参阅 qint128,quint128,Q_INT128_C(),Q_UINT128_C(),Q_INT128_MIN,Q_INT128_MAX, 和Q_UINT128_MAX

[since 6.6] qint128 Q_INT128_C(literal)

以与平台无关的方式封装有符号 128 位整数literal

注意: Q_INT64_C() 不同,该宏仅适用于 C++,不适用于 C。这是因为编译器不将这些字面量作为内置变量提供,而且 C 不支持用户自定义字面量。

该宏在 Qt 6.6 中引入。

另请参见 qint128,Q_UINT128_C(),Q_INT128_MIN,Q_INT128_MAX,Q_INT64_C() 和QT_SUPPORTS_INT128

[since 6.6] Q_INT128_MAX

该宏扩展为一个编译时常数,代表qint128 中可表示的最大值。

该宏在 C++ 和 C 模式下均可用。

该宏在 Qt 6.6 中引入。

另请参见 Q_INT128_MIN,Q_UINT128_MAX,qint128,Q_INT128_CQT_SUPPORTS_INT128

[since 6.6] Q_INT128_MIN

该宏扩展为一个编译时常数,代表qint128 中可表示的最小值。

该宏在 C++ 和 C 模式下均可用。

此宏在 Qt 6.6 中引入。

另请参见 Q_INT128_MAX,qint128,Q_INT128_C, 和QT_SUPPORTS_INT128

qint64 Q_INT64_C(literal)

以独立于平台的方式封装有符号 64 位整数literal

举例说明:

qint64 value = Q_INT64_C(932838457459459);

另请参见 qint64,Q_UINT64_C() 和Q_INT128_C()。

[since 6.6] quint128 Q_UINT128_C(literal)

以独立于平台的方式封装无符号 128 位整数literal

注意: Q_UINT64_C() 不同,该宏仅在 C++ 中可用,在 C 语言中不可用。这是因为编译器不将这些字面量作为内置变量提供,而且 C 语言不支持用户定义的字面量。

该宏在 Qt 6.6 中引入。

另请参阅 quint128,Q_INT128_C(),Q_UINT128_MAX,Q_UINT64_C() 和QT_SUPPORTS_INT128

[since 6.6] Q_UINT128_MAX

该宏扩展为一个编译时常数,代表quint128 中可表示的最大值。

该宏在 C++ 和 C 语言模式下均可用。

quint128 的最小值为 0(零),因此既不需要也不提供Q_UINT128_MIN

该宏在 Qt 6.6 中引入。

另请参见 Q_INT128_MAX,quint128,Q_UINT128_C, 和QT_SUPPORTS_INT128

quint64 Q_UINT64_C(literal)

以独立于平台的方式封装无符号 64 位整数literal

举例说明:

quint64 value = Q_UINT64_C(932838457459459);

另请参阅 quint64Q_INT64_C() 和Q_UINT128_C()。

© 2025 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.