使用Doxygen记录Qt项目

使用Doxygen记录Qt项目,qt,doxygen,Qt,Doxygen,我正在尝试使用Doxygen记录我的基于Qt的项目。这看起来是个不错的选择。我可以生成一切ok。我对为对象绘制的使用关系图特别感兴趣。它们显示了对象引用其他对象的位置 在我有一个指向另一个对象的简单指针的情况下,这同样可以正常工作,例如: OtherClass *myOtherObject; 但如果我使用Qt,比如: QPointer <OtherClass> myOtherObject; QPointer-myOtherObject; 或 QList myOtherObjec

我正在尝试使用
Doxygen
记录我的基于
Qt
的项目。这看起来是个不错的选择。我可以生成一切ok。我对为对象绘制的使用关系图特别感兴趣。它们显示了对象引用其他对象的位置

在我有一个指向另一个对象的简单指针的情况下,这同样可以正常工作,例如:

OtherClass *myOtherObject;
但如果我使用Qt,比如:

QPointer <OtherClass> myOtherObject;
QPointer-myOtherObject;

QList myOtherObjects;
那么这些不会显示在图表中


是否可以配置
Doxygen
以了解这些也是使用关系?

我通过使用输入过滤器找到了问题的部分解决方案。启用过滤器后,图表正确,但文本不正确。下面的示例屏幕截图

滤器 过滤器是用Python编写的,因此应该可以在任何平台上工作

将其与Doxyfile一起保存在文件(例如qt filter.py)中

import re, sys

PATTERNS = [
    (re.compile(r"QPointer *<(.*)>"), r"\1*"),
    (re.compile(r"QList *<(.*)>"), r"\1")
]

with open(sys.argv[1], "r") as infile:
    for line in infile:
        prev = None
        while line != prev:
            prev = line
            for regex, repl in PATTERNS:
                line = regex.sub(repl, line)
        sys.stdout.write(line)
过滤前

后过滤器

import re, sys

PATTERNS = [
    (re.compile(r"QPointer *<(.*)>"), r"\1*"),
    (re.compile(r"QList *<(.*)>"), r"\1")
]

with open(sys.argv[1], "r") as infile:
    for line in infile:
        prev = None
        while line != prev:
            prev = line
            for regex, repl in PATTERNS:
                line = regex.sub(repl, line)
        sys.stdout.write(line)
FILTER_PATTERNS = *.hpp=qt-filter.py