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);
}