2011-09-06 61 views
0

我正試圖在gui應用程序中重新實現或修改選項卡代碼。他們目前正在使用Qt信號和插槽系統來處理標籤欄中標籤的添加和刪除(例如,如果標籤被從一個標籤小部件拖到另一個標籤小部件,舊標籤小部件將向新標籤小部件指示新標籤來了)。我在想,而不是使用它,我可以使用線程安全的單例類來簡化事情。然後,當有一個標籤被移動時,這個小部件只會調用單例,而不是發出信號。單身人士或信號和老虎機?

感謝

+1

那麼,你想打破Qt應該工作的方式? –

+4

這將如何簡化代碼?你需要正確地實現一個線程安全的單例,然後重寫所有的代碼。發出一個信號是Qt的單個語句。 – Mat

回答

4

信號和槽。

甚至沒有開始爲什麼單身人士會不好,數據在Qt內更新的方式會被單例方法搞亂。

+0

那麼不會是這樣,因爲數據仍然由內部Qt函數管理。該選項卡的內部Qt函數將由管理單例調用,它將爲選項卡提供一個接口,以便與其容器(很可能是MDI Sub Windows)進行交互,而選項卡沒有指向其容器的指針。所以想象一下,如果我在程序中有無數個選項卡,那麼管理員將負責選項卡以及它們進入哪個容器。如果發生拖放,則單例將僅通知正確的窗口小部件發生了事件,並且你需要做出反應。 – Anonymous

3

不要這樣做。你在一個環境中工作,應該使用框架提供的機制。如果未來的用戶界面會有多個窗口和多個實例呢?

如果可能,你應該總是嘗試使用你正在使用的框架的方式。這也將有助於未來維護(升級,新員工等)

2

你想使用一個單身人士,它會接受消息並將其發回? (注意:如果你使用花園多種對象而不是單例,你基本上實現了Observer模式)。

然後你重新發明信號和插槽,它們在內部使用全局狀態。爲什麼不使用現有的信號和插槽來替代重新編寫一些困難的代碼工作?