2012-08-07 37 views
1

我有一個帶有一些小部件的GUI應用程序。 我想實現一個機制,使小部件能夠「註冊」到事件(從我定義的列表中),並且當發生事件時,將會調用註冊到該事件的所有小部件的「刷新」方法。QT:實現刷新UI的機制

我想過使用「Refresh」方法聲明「Refreshable」接口。我的主要問題是任何我能想到的實現(我主要考慮實現它與信號和插槽)將需要可刷新接口繼承QObject(所以一些元數據將被存儲,我會能夠使用信號和插槽),這意味着小部件將無法從Refreshable派生,因爲它們已經通過QWidget繼承QObject

任何幫助/想法將不勝感激!

+0

什麼時候你想刷新你的GUI?用戶點擊?或者在新數據來臨時自動刷新?我使用普通信號和插槽進行了GUI刷新。在插槽中,添加所有刷新方法。 – 2012-08-07 08:23:50

+0

你的意思是從'Refreshable'繼承了小部件嗎? Bit對你的描述感到困惑,但它應該可以通過信號/插槽機制來實現,這取決於你的事件觸發器。 – 2012-08-07 08:42:58

回答

1

您正試圖設計一個已經在Qt中提供的解決方案。每個QWidget都有插槽repaint()(強制立即)和update()(排隊推遲)。這就是關於你可以刷新的所有東西。換句話說,QWidget已經實現了理論上的可刷新界面。是的,你的觀察是正確的,你不能從QWidget繼承,而是另一個必須從QObject繼承的「接口」,以便能夠聲明一個插槽。我認爲如果你停止調用它的界面,它會變得更清晰,因爲從技術上講它不是 - 至少在純虛擬類的意義上說。