2011-04-13 35 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