你如何用 doxygen 记录 QFlags?

How do you document QFlags with doxygen?

我有这样的东西(QFlags 文档中的示例):

public:
//! Enum doc
enum Option {
    NoOptions = 0x0, //! Value doc
    ShowTabs = 0x1,
    ShowAll = 0x2,
};
Q_DECLARE_FLAGS(Options, Option)

现在我可以记录 Option 及其值,doxygen 会很好地显示它们。但是我不能让 doxygen 为 Options 生成任何东西。 在 Qt 文档中,它看起来像 this,他们在枚举文档的顶部和底部添加了注释,并将其列为索引部分中的单独类型。

更重要的是,Qt 能够 link 到 QFlags 用作函数参数(例如 QObject::findChild())。 Doxygen 生成函数签名,显示所有参数,但不 link 标志类型。我能以某种方式实现吗?

感谢 ,我能够通过这样做使 QFlags 类型出现在文档中:

在 Doxyfile 中:

  • 设置ENABLE_PREPROCESSING = YES
  • 设置MACRO_EXPANSION = YES
  • 设置PREDEFINED += "Q_DECLARE_FLAGS(flagsType,enumType)=typedef QFlags<enumType> flagsType;"
    或者如果您希望它显示为 enum 而不是 typedef:
    PREDEFINED += "Q_DECLARE_FLAGS(flagsType,enumType)=enum flagsType {};"

然后您可以像往常一样记录 Q_DECLARE_FLAGS() 调用:

//! Enum doc
enum Option {
    NoOptions = 0x0, //! Value doc
    ShowTabs = 0x1,
    ShowAll = 0x2,
};
//! QFlags type for \ref Option
Q_DECLARE_FLAGS(Options, Option)

关于 enum 本身的说明,就像 Qt 文档一样:
我认为不可能自动插入这个,但你可以写一个 alias 然后像这样手动将它插入到 enum 的文档中:

在 Doxyfile 中:

ALIASES += qFlagsNote{2}="<p>The  type is a typedef for QFlags\<\>. It stores an OR combination of  values.</p>"

在 C++ 代码中:

/*! Enum doc
 * \qFlagsNote{Options,Option}
 */
enum Option {
    NoOptions = 0x0, //! Value doc
    ShowTabs = 0x1,
    ShowAll = 0x2,
};

将产生:

The Options type is a typedef for QFlags<Option>. It stores an OR combination of Option values.