《clean code》中说自己的工程最好创建自己的数据类型定义。Qt在其QtGlobal头文件中包含了一些全局定义。包括基本数据类型、函数和宏定义。
数据类型
数据类型定义是对基本类型的重定义,是为了确保在各个平台上各数据类型都有统一的确定的长度。其他一些定义是与Qt消息处理相关的类型。
Qt数据类型 |
等效定义 |
描述 |
QFunctionPointer |
void (*)() |
a pointer to a function that takes no arguments and returns void |
QtMessageHandler |
This is a typedef for a pointer to a function with the following signature: void myMessageHandler(QtMsgType, const QMessageLogContext &, const QString &); |
|
QtMsgType { QtDebugMsg, QtInfoMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg } |
This enum describes the messages that can be sent to a message handler (QtMessageHandler) |
|
qint8 |
signed char |
1字节 |
qint16 |
signed short |
2字节 |
qint32 |
signed int |
4字节 |
qint64 |
long long int |
8字节 |
qintptr |
signed int * |
Integral type for representing pointers in a signed integer. 32位或64位(随平台) |
qlonglong |
long long int |
同qint64 |
qptrdiff |
Integral type for representing pointer differences. |
|
qreal |
double |
8字节, Typedef for double unless Qt is configured with the -qreal float option. |
quint8 |
unsigned char |
1字节 |
quint16 |
unsigned short |
2字节 |
quint32 |
unsigned int |
4字节 |
quint64 |
unsigned long long int |
8字节 |
quintptr |
Integral type for representing pointers in an unsigned integer |
|
qulonglong |
unsigned long long int |
同quint64 |
uchar |
unsigned char |
同quint8 |
uint |
unsigned int |
同quint32 |
ulong |
unsigned long |
unsigned long |
ushort |
unsigned short |
同quint16 |
函数
头文件中包含一些常用函数的定义,这些函数多以模板类型作为参数,返回相应的模板类型。这些模板类型可用任意类型实例化。
函数 |
描述 |
T qAbs(const T &value) |
返回绝对值,适用于整型和浮点型。 |
const T & qBound(const T &min, const T &value, const T &max) |
返回value限定在min和max范围之内的值 |
quint32 qFloatDistance(float a, float b) |
返回浮点数a和b之间的点数。 |
quint64 qFloatDistance(double a, double b) |
同上 double |
bool qFuzzyCompare(double p1, double p2) |
若p1和p2近似相等,则返回true |
bool qFuzzyCompare(float p1, float p2) |
同上 |
bool qFuzzyIsNull(double d) |
若d约等于0,则返回true |
bool qFuzzyIsNull(float f) |
同上 |
double qInf() |
返回无穷大的数 |
QtMessageHandler qInstallMessageHandler(QtMessageHandler handler) |
注册Qt Message,用于输出log信息。 |
bool qIsFinite(double d) |
若d是一个有限的数,返回true |
bool qIsFinite(float f) |
同上 |
bool qIsInf(double d) |
若d是一个无限大的数,则返回true |
bool qIsInf(float f) |
同上 |
bool qIsNaN(double d) |
若d不是一个数,则返回true |
bool qIsNaN(float f) |
同上 |
const T & qMax(const T &value1, const T &value2) |
返回v1和v2中较大的值 |
const T & qMin(const T &value1, const T &value2) |
返回v1和v2中较小的值 |
double qQNaN() |
返回quiet NaN |
qint64 qRound64(double value) |
将value近似为最接近的64位整数 |
qint64 qRound64(float value) |
同上 |
int qRound(double value) |
将value近似为最接近的32位整数 |
int qRound(float value) |
同上 |
double qSNaN() |
返回signal NaN |
T * q_check_ptr(T *pointer) |
检查指针,返回该指针 |
int qrand() |
返回0至RAND_MAX之间的伪随机数 |
void qsrand(uint seed) |
使用种子初始化随机数列 |
QString qtTrId(const char *id, int n = -1) |
字符转换,类似于tr()函数 |
宏定义
头文件中定义了很多宏定义,这里就不一一列出了,下面挑出几个常见的介绍。
宏定义 |
描述 |
QT_VERSION |
标识Qt编译器版本,如0x050901标识Qt5.9.1。 |
QT_VERSION_CHECK |
Qt版本号的征整数表示,用以条件编译设置。 |
QT_VERSION_STR |
Qt版本号对应的字符串,如“5.9.1” |
Q_BYTE_ORDER |
标识内存中存储数据的字节顺序 |
Q_BIG_ENDIAN |
大端存储 #if QBYTE_OEDER== Q_BIG_ENDIAN |
Q_LITTLE_ENDIAN |
小端存储 #if QBYTE_OEDER== Q_ LITTLE _ENDIAN |
Q_DECL_IMPORT |
在设计或使用共享库时,用以导入内容。 |
Q_DECL_EXPORT |
在设计或使用共享库时,用以导出内容。 |
Q_DECL_OVERRIDE |
用于重载一个虚函数 |
Q_DECL_FINAL |
将虚函数定义为最终级别,不能被重载。 |
Q_UNUSED(name) |
在函数中定义不在函数体内使用的参数,避免警告。 |
Q_ASSERT(bool test) |
当test为false时打印警告信息 |
Q_CHECK_PTR(void *pointer) |
检查指针,打印内存错误信息 |
Q_OS_LINUX |
在使用Linux平台编译时被定义,其他平台类似 |
Q_PROCESSOR_X86_64 |
在x86平台用64位编译器编译时被定义,其他类似 |
qDebug(const char *message, ...) |
打印调试信息,还有qCritical,qFatal,qInfo, qWarning |