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

posted @ 2023-06-20 17:09  fengMisaka  阅读(313)  评论(0编辑  收藏  举报