我有这样的东西(例子来自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生成函数签名,显示所有参数,但不链接标志类型。我能以某种方式实现吗?
感谢albert's comment,我能够通过这样做使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 \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组合。