简单的桌面GUI架构

3

在设计桌面应用程序时,我发现很难为不同的窗口之间建立一种清晰的通信方式。

例如:一个设置/选项对话框窗口可以修改主窗口的行为。

是否将我的“Main”(例如,在任何时候只应该有一个窗口实例可见)设置为单例是一个好主意?因为本来就只有一个窗口实例。

这将使单独的窗口之间的通信更加容易和清洁。

如果上述内容属实,那么我可以添加类似于Facade的方法,以提供干净的接口给其他窗口使用。

例如: MainWindow.setFont(Font f);

感谢任何意见。


两个窗口之间是否互相知道?例如,主窗口中的代码是否负责显示设置窗口? - Lasse V. Karlsen
你考虑过使用应用程序对象作为单例来帮助窗口通信吗? - 9000
@9000。是的,我有。但这似乎更整洁,而且可扩展。 - Kevin Hicks
@Lasse V. Karlsen。我猜在我的简单示例中确实如此。在那里,我可以只使用内部类。但是我考虑的是更大的应用程序。 - Kevin Hicks
2个回答

3
一个关于这个主题的好读物是Martin Fowler的GUI架构,其中涵盖了各种设计模式。例如,在引用文章的上下文中,观察者同步模式可能适合您。
如果可以的话,建议您使用一些知名框架,因为编写自己的框架可能是一项艰巨的任务。

谢谢您的建议。我并不是在试图设计整个框架,只是想找到一个好的方法来组织我的GUI界面... - Kevin Hicks

0

这是Qt做得正确的事情之一。如果您想要与窗口通信,请发送一个信号-然后窗口可以处理接收信号或不接收信号,发送方无需关心它是否存在。


回答OpenCV相关问题真的很令人沮丧,是吧?很少有人点赞,而且几乎从不会有提问者回来接受答案。 - karlphillip
@karlphillip - 问题还在于openCV的“官方”列表是一个糟糕的雅虎群组网站 - 没有地方供高级opencv用户使用。 - Martin Beckett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接