你如何用 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.
我有这样的东西(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 标志类型。我能以某种方式实现吗?
感谢
在 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.