Qt 常用全局宏定义
本文主要积累一些常用宏定义,有些定义在头文件 QtGlobal 中。
QT_VERSION ,QT_VERSION_CHECK
// 主要用于条件编译设置,根据Qt版本不同编译不同的代码
// 我这里用的Qt版本是5.12.2,因此软件走的分支是isHighVer = false;
// 示例代码:
#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
isHighVer = true;
#else
isHighVer = false;
#endif
QT_VERSION_STR
这个宏展开为 Qt 版本号的字符串,如 “5.9.0”。
// 打印当前Qt版本的字符串
qDebug() << QT_VERSION_STR << endl;
Q_BYTE_ORDER、Q_BIG_ENDIAN、Q_LITTLE_ENDIAN
Q_BYTE_ORDER
表示系统内存中数据使用的字节序;
Q_BIG_ENDIAN
表示大端字节序;
Q_LITTLE_
ENDIAN 表示小端字节序。
这几个宏在需要判断系统字节序时才会用到,使用示例如下:
// 检测系统是否为小端
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN // 我的这个平台是小端的
qDebug() << "Q_LITTLE_ENDIAN" << endl;
#else
#endif
QT_NO_DEBUG_OUTPUT
在 pro 文件添加如下代码,软件中所有 QDebug 将失效
# 禁用所有QDebug打印
DEFINES += QT_NO_DEBUG_OUTPUT
Q_FUNC_INFO
函数所属类和参数信息。
// 打印函数所属类和参数信息
qDebug() << Q_FUNC_INFO << “this is a debug example”;
Q_UNUSED(valuename)
用于函数中未使用的变量,告诉编译器这个变量不需要告警。另外,也可以在 pro 文件添加如下代码屏蔽未使用的告警:
void MainWindow::on_imageSaved(int id, const QString &fileName)
{
Q_UNUSED(id);
LabInfo->setText("图片保存为: " + fileName);
}
# 屏蔽未使用的告警
QMAKE_CXXFLAGS += -Wno-unused-parameter
Q_DECL_OVERRIDE
在类定义中,用于重载一个虚函数,例如在某个类中重载虚函数 paintEvent(),可以定义如下:
void paintEvent(QPaintEvent*) Q_DECL_OVERRIDE;
使用 Q_DECL_OVERRIDE 宏后,如果重载的虚函数没有进行任何重载操作,编译器将会报错。
Q_DECL_FINAL
用于将一个虚函数定义为最终级别,不能再被重载,或者定义一个类不能再被继承。
class QPushButton Q_DECL_FINAL { // QPushButton 不能再被继承
//...
};
Q_SIGNAL
不需要 signals 关键字就可以将一个函数指定为 singal 函数。
class A : public QObject
{
Q_OBJECT
Q_SIGNALS:
void sigTest(QPoint point);
}
Q_SLOT
不需要 slots 关键字就可以将一个函数指定为 slot 函数。
class B : public QObject
{
Q_OBJECT
private Q_SLOTS:
void slotTest(QPoint point);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
2019-06-20 Qt 2D绘图之四:绘图中的其他问题
2019-06-20 Qt 2D绘图之三:绘制文字、路径、图像、复合模式
2019-06-20 Qt 2D绘图之二:抗锯齿渲染和坐标系统
2019-06-20 Qt 2D绘图之一:基本图形绘制和渐变填充