C++ class Qt 中的声明语法

C++ class declaration syntax in Qt

第一次使用Qt-6,对C++比较业余。我看到了这种类型的 Class 声明,但无法理解它的含义。

class XYZ : public QWidget
{
    Q_OBJECT
    public:
        XYZ
...
};

这叫什么? 有人可以解释这是什么或指出相关的 material / 问题。

这是一个 class 声明,其中您的 class XYZ 继承自名为 QWidget 的 QT 内置 class,它是基础QT 中所有用户界面对象的 class(参见:https://doc.qt.io/qt-6/qwidget.html)。

简而言之,宏 Q_OBJECT 允许您使用 signalsslots 的系统(用于 QT 中对象之间的通信)等等(参见:https://doc.qt.io/qt-6/qobject.html#Q_OBJECT) 文档是这样描述的:

The Q_OBJECT macro must appear in the private section of a class definition that declares its own signals and slots or that uses other services provided by Qt's meta-object system.