
<QtGlobal>头文件中包含的是一些基础的全局声明 。它被Qt 中大部分的其它头文件包含。 详细说明...
在这些类型定义中,有一些是为基本类型而做的便利定义(其中一些是为了确保某些数据类型在Qt 支持的所有平台上具有特定的位尺寸(bit-sizes,即存储空间) platforms supported by),另一些是与Qt 的消息处理相关的。那些函数呢,用来:生成消息、处理Qt 版本信息、比较及调整对象的值。再就是那些宏,某些宏使得程序员可以向自己的程序中加入与编译器或平台相关的代码,另一些宏是一些便利性的东西,用于支持更高层次的操作。
这个头文件中声明了多个类型定义 ,它们确保了 ,在Qt 支持的平台上 ,某些基本数据类型具有特定的位尺寸 ,例如, qint8 是一个带符号的字符型 ,它会确保 , 在Qt支持的所有平台上 ,其尺寸都是8位。其中还定义了 qlonglong 类型,对应的是 long long int 。
还定义了一些便利类型: qreal ,用于 double ; uchar ,用于 unsigned char ; uint ,用于 unsigned int ; ulong ,用于 unsigned long ; ushort ,用于 unsigned short 。
最后说到 QtMsgType ,表示的是各个可被生成并发送到某个Qt 消息处理器的消息 ; QtMessageHandler ,是对于有以下形式的函数指针的类型定义 : void myMessageHandler(QtMsgType, const QMessageLogContext &, const char *) 。 QMessageLogContext 类 ,包含了记录当前这条消息的代码所处的行号 、文件名和函数名。这些信息是由 QMessageLogger 类创建的 。
<QtGlobal>头文件中包含有多个函数 ,可用于比较及调整一个对象的值。这些函数的参数是模板类型的 :妳可以使用 qAbs ()函数来获取某个对象的绝对值 ,可以使用 qBound ()函数来将某个对象的值限定在指定的最小值和最大值范围内 。妳可以使用 qMin ()和 qMax ()来分别获取两个指定对象中的最小值和最大值。这些函数的返回值类型都是对应的模板类型 ;这些模板类型可被替换成任何其它类型。
示例:
int myValue = 10;
int minValue = 2;
int maxValue = 6;
int boundedValue = qBound (minValue, myValue, maxValue);
// boundedValue == 6
<QtGlobal>还包含一些函数 ,可用来使用指定的字符串参数生成消息: qCritical () 、 qDebug () 、 qFatal ()和 qWarning () 。这些函数会带着指定的消息来调用相应的消息处理函数 。
示例:
if (!driver()->isOpen() || driver()->isOpenError()) {
qWarning ("QSqlQuery::exec: database not open");
return false;
}
还有其它一些函数 : qRound ()和 qRound64 () ,它们的参数是一个 qreal 值,返回的分别是与该值最接近的整数或 64位整数; qInstallMessageHandler ()函数 ,它会安装指定的 QtMessageHandler ; qVersion ()函数 ,在运行时以字符串的形式返回Qt 的版本号 。
<QtGlobal>头文件中带有一系列的宏 (Q_CC_*),当妳在特定的平台上编译妳的程序时 ,对应的宏就会处于已定义状态。例如,如果妳使用Forte Developer 或Sun Studio C++编译妳的程序 ,则 Q_CC_SUN 宏会被定义。这个头文件中还带有一些在特定平台上会被定义的宏 (Q_OS_*)。例如,在基于Unix 的系统中 , Q_OS_UNIX 这个宏会被定义。
这些宏的目的是,让程序员可以在他/她们的程序中加入一些与编译器与平台相关的代码。
还有一些宏 ,是为更高层次的处理而定义的便利宏 : QT_TRANSLATE_NOOP ()和 QT_TR_NOOP ()宏 ,使得妳可以进行用户界面的动态翻译 ,也就是说,在不改变源代码文本的情况下改变翻译结果。 Q_ASSERT ()和 Q_ASSERT_X ()宏 ,可用于在不同的精确级别上产生警告消息。 Q_FOREACH ()和 foreach ()宏 ,用来实现Qt 的foreach 循环。
Q_INT64_C ()和 Q_UINT64_C ()宏 ,用于以一种与平台无关的方式引用带符号及无符号 64位整数常量。 Q_CHECK_PTR ()宏 ,当所传递的指针为 0时,会输出一个警告消息,其中包含有源代码文件名和行号 ,并且告之本程序已经用完内存。 qPrintable ()宏 ,用于更简单地输出文本消息。
还有这些宠 : QT_POINTER_SIZE 宏 ,以字节数的形式表示某个指针的大小; QT_VERSION 和 QT_VERSION_STR 宏,展开之后分别是一个数值和一个字符串 ,表示的是 Qt 的版本号 ,即,本程序所链接到的 QT版本号。
参考 <QtAlgorithms> 和 QSysInfo 。
修改默认的消息处理器的输出模式。
允许调整 qDebug () 、 qWarning ()、 qCritical ()和 qFatal ()的输出模式。
支持以下占位符:
|
占位符 |
说明 |
|
%{appname} |
|
|
%{file} |
源代码文件的路径 |
|
%{function} |
函数名 |
|
%{line} |
源代码文件中的行号 |
|
%{message} |
消息内容本身 |
|
%{pid} |
|
|
%{threadid} |
当前线程的编号 |
|
%{type} |
"debug"、"warning"、"critical"或"fatal" |
妳还可以通过使用 %{if-debug} 、 %{if-warning} 、 %{if-critical} 或 %{if-fatal} 来将消息的类型作为条件来产生不同的输出,在条件末尾要带上 %{endif} 。只有当类型匹配的时候 , %{if-*} 和 %{endif} 之间的内容才会被输出。
示例:
QT_MESSAGE_PATTERN="[%{if-debug}D%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{file}:%{line} - %{message}"
默认模式 (pattern)是"%{message}"。
可以通过设置环境变量QT_MESSAGE_PATTERN 的值来在运行时刻来改变模式 ;如果qSetMessagePattern()被调用,并且QT_MESSAGE_PATTERN 环境变量也被设置了,那么,环境变量中的值将被优先采用。
如果安装了自定义的消息处理器,那么,qSetMessagePattern()将不起作用。
这个函数是从QtCore 5.0 开始引入的。
参考 qInstallMessageHandler ()和 调试技巧 ( Debugging Techniques )。
如果此程序是使用GNU C++编译器来编译的,则这个宏会被定义。
这个宏,将一个符号(symbol)标记为要在共享库中导出(参考 创建共享库 )。
参考 Q_DECL_IMPORT 。
在任何的BSD 4.4 系统中,这个宏会被定义。
在FreeBSD 系统中,这个宏会被定义。
在GNU Hurd 系统中,这个宏会被定义。
在 Linux 内核的系统中,这个宏会被定义。
在NetBSD 系统中,这个宏会被定义。
在OpenBSD 系统中,这个宏会被定义。
在任何的UNIX BSD/SYSV 系统中,这个宏会被定义。
在32位及64位的Windows 系统(不包括Windows CE)中,这个宏会被定义。
提示编译器:本函数体中, name 这个参数是不会使用的。这样做,可以在确保函数因带有有意义的参数而变得易读的同时,去除编译器的警告信息。
将 str 的内容以一个 const char * 的形式返回 。它等价于 str .toLocal8Bit().constData() 。
在使用了qPrintable()的语句执行完毕之后,这里所产生的字符型(char)指针就变成无效的了。这是因为,由toLocal8Bit()返回的数组将会超出作用域。
示例:
qWarning ("%s: %s", qPrintable(key), qPrintable(value));
参考 qDebug () 、 qWarning () 、 qCritical ()和 qFatal () 。
罗海琼
罗海琼
HxLauncher: Launch Android applications by voice commands