2011-04-13 39 views
2

以前在设计桌面应用程序时,我总是发现很难为不同的窗口构建一个干净的方式来相互通信。简单的桌面GUI架构

例如:设置/选项对话窗口,用于修改主窗口的行为。

会使我的“主”(例如,应该只有一个窗口的实例一次可见)单身人士是一个好主意吗?因为反正一次只能有一个呢?

这样可以让分开的窗口更容易,更清晰地进行通信。

如果以上情况属实,那么我可以添加类似于Facade的方法来将干净的界面添加到其他窗口。例如: MainWindow.setFont(Font f);

感谢您的任何意见。

+0

两个窗口都知道另一个?即。是在主窗口中负责显示设置窗口的代码,例如? – 2011-04-13 20:41:06

+0

您是否考虑过使用Application对象作为单例来帮助Windows进行通信? – 9000 2011-04-13 20:44:50

+0

@ 9000。是的,我有。但是这看起来有点整齐,可以扩展。 – 2011-04-13 20:46:44

回答

3

关于该主题的一个很好的阅读是来自Martin Fowler的GUI Architectures,它涵盖了各种设计模式。例如,Observer Synchronization模式可能适用于您在参考文章的上下文中。

如果可以,我建议你坚持一些众所周知的框架,因为写你自己可能是一项艰巨的任务。

+0

谢谢您的建议。我不是在设计一个完整的框架,只是组织我的GUI的一个好方法... – 2011-04-13 23:14:37

0

这是Qt正确的事情之一。如果你想与窗口通信发送一个信号 - 那么窗口可以处理接收信号与否,发送者不需要关心它是否存在。

+0

回答OpenCV的问题令人沮丧吗?很少ppl upvote,几乎从来没有OP回来接受答案。 – karlphillip 2011-04-25 18:08:18

+0

@karlphillip - 问题在于openCV的'官方'列表是一个可怕的雅虎组织网站 - 无处可供高级opencv用户使用 – 2011-04-26 23:46:01