你如何用doxygen记录QFlags?

问题描述 投票:4回答:1

我有这样的东西(例子来自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能够链接到QFlags,在QFlags中它被用作函数参数(例如QObject::findChild())。 Doxygen生成函数签名,显示所有参数,但不链接标志类型。我能以某种方式实现吗?

c++ qt doxygen
1个回答
2
投票

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

在Doxyfile中:

  • 设置ENABLE_PREPROCESSING = YES
  • 设置MACRO_EXPANSION = YES
  • 设置PREDEFINED += "Q_DECLARE_FLAGS(flagsType,enumType)=typedef QFlags<enumType> flagsType;" 或者如果您希望它显示为enum而不是typedefPREDEFINED += "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 \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组合。

© www.soinside.com 2019 - 2024. All rights reserved.