我正在设计一个简单的 GUI。我有小部件,它有孩子和一个父母。每个 Widget 都是一个 Composite 对象,带有一个 WidgetComposite 对象的向量。其中一个 WidgetComposites 是 PaintingBehaviour,但 Widget 并不知道它本身。
为了显示我的窗口,我使用了一个访问者,称为 ScreenVisitor。当调用访问者时,会发生以下情况:
第一个小部件 WidgetScene 迭代其每个小部件并调用“accept(Visitor* v)”方法。然后,每个小部件接受访问者,然后迭代其子级。
例如,这是访问者必须接受的对象列表(按照发生的顺序)。
root
child1
child2
child3
child4
child5
child6
child7
现在,我的问题很简单:我希望将每个 Widget 绘制在其父级上。你将如何进行?我试过一棵树,但我总是遇到同样的问题:当我必须在层次结构中上升时(例如,在显示 child3 之后,当我必须显示 child4 时)我不知道如何获得正确的父母。
我正在用 C++ 编码,但这个问题不是特定于语言的。
你有什么想法 ?提前致谢 !