我有这样的事情(来自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,在此将其用作函数参数(例如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,
};
将产生: