Qt全局定义

一、QtGlobal头文件

  • 头文件中包含了Qt类库的一些全局定义,包括:
    • 基本数据类型
    • 全局函数
    • 宏定义

二、基本数据类型

在这里插入图片描述

三、全局函数

在这里插入图片描述

四、宏定义

1.Qt版本相关的宏

1.1 QT_VERSION

这个宏展开为数值形式 0xMMNNPP (MM = major, NN = minor, PP = patch) 表示 Qt 编译器版本,例如 Qt 编译器版本为 Qt 5.9.1,则 QT_VERSION 为 0x050901。这个宏常用于条件编译设置,根据 Qt 版本不同,编译不同的代码段。

1.2 QT_VERSION_CHECK

这个宏展开为 Qt 版本号的一个整数表示,用于版本判断的时候条件编译,如下示例:

#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))#include <QtWidgets>
#else#include <QtGui>
#endif

1.3 QT_VERSION_STR

这个宏展开为 Qt 版本号的字符串,用于显示,比如将界面title设置为qt版本号:

 this->setWindowTitle(QT_VERSION_STR);

2. 内存字节序相关宏(内存数据使用的大小端)

Q_BYTE_ORDERQ_BIG_ENDIANQ_LITTLE_ENDIAN
Q_BYTE_ORDER 表示系统内存中数据使用的字节序;
Q_BIG_ENDIAN 表示大端字节序;
Q_LITTLE_ ENDIAN 表示小端字节序。
这几个宏在需要判断系统字节序时才会用到,使用示例如下:

#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN			//当前系统是否使用的小端...
#else...
#endif

3.共享库相关宏定义

  • Q_DECL_IMPORTQ_DECL_EXPORT 在使用和设计共享库时,用于导入导出库的内容。

4. 虚函数重载宏

  • Q_DECL_OVERRIDE在类定义中,用于重载一个虚函数,例如在某个类中重载虚函数 paintEvem(),可以定义如下:
void paintEvent(QPaintEvent*) Q_DECL_OVERRIDE;

使用 Q_DECL_OVERRIDE 宏后,如果重载的虚函数没有进行任何重载操作,编译器将会报错。

5.函数内不使用参数处理宏

Q_UNUSED这个宏用于在函数中定义不在函数体里使用的参数,如果不使用该宏定义处理,编译器将会报出参数未使用的警告;宏定义使用示例如下,id不需要使用的情况:

void MainWindow::on_imageSaved(int id, const QString &fileName)
{Q_UNUSED(id);ui->LabInfo->setText (fileName);
}

6. 调试类宏定义

6.1 qDebug调试输出宏

这是qt中的信息调试宏,还有其他不同等级的调试宏定义,qt中宏定义的源代码如下:

#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug
#define qInfo QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).info
#define qWarning QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).warning
#define qCritical QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).critical
#define qFatal QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).fatal

以上宏定义都是用于调试信息输出,使用如下:

    qDebug()<<"this is a debug example";

6.2 Q_FUNC_INFO

函数信息宏,包含函数所属类和参数信息,使用如下:

    qDebug()<<Q_FUNC_INFO<<"this is a debug example";

该宏一般和qDebug配合使用,可用于快速定位调试信息位置。
调试信息输出如下:
在这里插入图片描述

7. 循环语句宏

7.1 forever死循环宏定义

和while(1)类似,其底层使用for( ; ; )实现,使用方法如下:

	forever{...}

7.2 foreach容器类遍历宏

可遍历链表、vecter、hash等各种容器类的数据结构。使用示例如下:

//下面这个循环语句用来查找可以用的串口端口
//不确定有多少串口可用,也就不知道循环多少次,所以用foreach(不知道用的就百度)
foreach (const QSerialPortInfo &info,QSerialPortInfo::availablePorts())		
{QSerialPort serial;		//在循环语句内部实例化类,因为可用串口不一定只就一个serial.setPort(info);   //设置能够用的串口端口if(serial.open(QIODevice::ReadWrite))		//用ReadWrite可读写的方式打开串口{//记录可用的uart名字serial.portName(),前面的ui->PortBox->addItem不用管,这个是界面里面的。ui->PortBox->addItem(serial.portName());//然后关闭串口,因为这段代码打开串口只是为了查找串口可以用不可用而已。serial.close();			}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/163717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【漏洞复现】Django _2.0.8_任意URL跳转漏洞(CVE-2018-14574)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 说明内容漏洞编号CVE-2018-14574漏洞名称Django任意URL跳转漏洞漏洞…

java八股文(mysql篇)

什么是关系型数据库&#xff1f; 其是建立在关系模型基础上的一种数据库&#xff0c;这种关系分为&#xff1a;一对一&#xff0c;一对多&#xff0c;多对多。 我们的数据存放在表中&#xff0c;在表中会有一至多个字段&#xff0c;一行就是一条数据。 mysql有哪些字段呢&…

solidworks安装时,出现这个错误:无法获得下列许可SOLIDWORKS Standard.无效的(不一致的)使用许可号码。(-8,544,0)

问题描述&#xff1a;在安装SolidWorks2023时&#xff0c;按照软件管家中的步骤&#xff0c;但是在打开SolidWorks2023桌面上的快捷键时&#xff0c;出现了这个错误&#xff1a; 无法获得下列许可SOLIDWORKS Standard.无效的&#xff08;不一致的&#xff09;使用许可号码。(-…

边缘计算助力低速无人驾驶驶入多场景落地快车道

自动驾驶刮起的风&#xff0c;如今正吹向低速无人驾驶赛道。近期不完全统计显示&#xff0c;当前A股及港股正在排队IPO的自动驾驶相关企业共有12家&#xff0c;其中实现盈利的企业仅两家&#xff0c;而且实现盈利的两家企业最主要的收入并不完全源于自动驾驶领域。 相比之下&am…

java操作redis

java操作redis 一、开发工具连接Redis二、使用Java操作Redis2.1Redis字符串(String)2.2Redis哈希(Hash)2.3列表&#xff08;List&#xff09;2.4集合&#xff08;Set&#xff09; 一、开发工具连接Redis ①导入Redis的pom依赖 使用的是maven <dependency><groupId&g…

定时发朋友圈怎么操作?

只需简单两步&#xff1a; 1&#xff09;在朋友圈内容输入框中内输入需发送的文本内容&#xff0c;点击表情图标可在浮窗中选择表情。上传图片可点击“”图标按钮&#xff0c;选择本地的的图片发送到朋友圈中。。 2&#xff09;选择发布时间&#xff0c;朋友圈发布时间有三种…

定时发圈怎么设置?

微信本身是不能定时发送朋友圈的。微信公众号可以定时发送&#xff0c;微博可以定时发送&#xff0c;那微信可不可以也定时发送呢&#xff1f;当然可以&#xff0c;只要用这个方法&#xff0c;微信也能实现定时发朋友圈&#xff0c;不用再守着时间发朋友圈了。

InSAR 滤波算法

目录 1.InSAR 滤波原理 2.InSAR 滤波算法 2.1 均值滤波 2.2 Goldstein 滤波 2.3 改进的Goldstein 滤波 2.4 精致 Lee 滤波 2.5 小波滤波2.6 NL-InSAR 滤波 2.7 InSAR-BM3D 滤波 3.参考文献 本文由CSDN点云侠原创&#xff0c;爬虫网站请自重。 InSAR 滤波是InSAR 技术处理中的一…

RefConv: 重参数化的重新聚焦卷积(论文翻译)

文章目录 摘要1、简介2、相关研究2.1、用于更好性能的架构设计2.2、结构重参数化2.3、权重重参数化方法 3、重参数化的重聚焦卷积3.1、深度RefConv3.2、普通的RefConv3.3、重聚焦学习 4、实验4.1、在ImageNet上的性能评估4.2、与其他重参数化方法的比较4.3、目标检测和语义分割…

Jupyter Notebook交互式开源笔记本工具

1、官网 http://jupyter.org/ 2、什么是Jupyter Notebook Jupyter Notebook一个交互式的开源笔记本工具&#xff0c;可以用于编写、运行、和共享代码、文本、图形等内容。 如下文本、代码、图形 支持多种编程语言&#xff0c;包括python、R和Julia等&#xff0c;可以走一个…

TCP/IP协议群

TCP/IP协议群 什么是TCP/IP协议群 从字面意义上讲&#xff0c;有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下&#xff0c;它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说&#xff0c;IP 或 ICMP、…

SpringBoot整合EasyExcel

springboot整合easyExcel的全流程&#xff0c;跟着做就能出来。对项目没有侵入要求。0侵入&#xff0c;可插拔 依赖 <!--操作Excel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>…