如何使用doxygen记录QFlags?

4

我有一个类似于下面这样的东西(来自QFlags文档的示例):

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

现在我可以记录 Option 和它的值,并且它们将被 doxygen 显示为漂亮的格式。但是,我无法让 doxygen 为 Options 生成任何内容。在 Qt 文档中,它看起来像这样,他们在枚举类型的文档顶部和底部添加注释,并且在索引部分中将其列为单独的类型。
更重要的是,Qt 能够链接到 QFlags,其中它用作函数参数(例如 QObject::findChild())。Doxygen 会生成函数签名,显示所有参数,但不会链接标志类型。我能否通过某种方式实现这一点?

1
你尝试过使用 PREDEFINED 来做些什么吗,例如:PREDEFINED = "Q_DECLARE_FLAGS(x,y)=x;" 并将 MACRO_EXPANSION 设置为 YES 吗? - albert
1个回答

4
感谢albert的评论,通过以下步骤,我能够让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)

关于 Qt 文档中提到的 enum 的注释:

我认为无法自动插入,但可以编写一个 别名,然后手动将其插入到 enum 的文档中,如下所示:

在 Doxyfile 中:

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

在C++代码中:
/*! Enum doc
 * \qFlagsNote{Options,Option}
 */
enum Option {
    NoOptions = 0x0, //! Value doc
    ShowTabs = 0x1,
    ShowAll = 0x2,
};

将会产生:

Options 类型是 QFlags<Option> 的 typedef。它存储 Option 值的 OR 组合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接