使用MVC,我有幾個視圖類,所有這些類都需要寫入事件日誌。事件日誌包含一個名爲addEntry的插槽,它將數據寫入日誌。我正在努力如何實現這些信號。我不希望將事件日誌對象傳遞給每個類。所以我...Qt中的信號共享架構
1)每一類中創建本地信號,並讓我的主窗口連接它們呢? 2)我可以使插槽靜態,以便所有視圖都可以訪問它而不需要事件日誌對象嗎? 3)創建一個信號並將其作爲函數指針傳入每個類,以便它們都可以使用相同的信號? 4)別的東西?
謝謝。
使用MVC,我有幾個視圖類,所有這些類都需要寫入事件日誌。事件日誌包含一個名爲addEntry的插槽,它將數據寫入日誌。我正在努力如何實現這些信號。我不希望將事件日誌對象傳遞給每個類。所以我...Qt中的信號共享架構
1)每一類中創建本地信號,並讓我的主窗口連接它們呢? 2)我可以使插槽靜態,以便所有視圖都可以訪問它而不需要事件日誌對象嗎? 3)創建一個信號並將其作爲函數指針傳入每個類,以便它們都可以使用相同的信號? 4)別的東西?
謝謝。
假設您的視圖類繼承自QAbstractItemView,那麼他們已經有了可以使用的信號,特別是如果您使用Q * Widget便利類。在你的情況下,如果這對我不起作用,我會做1)。你也可以考慮從模型類發出信號 - 畢竟這是更新實際發生的地方。
我會堅持#1。謝謝。 – kkeogh
無法在事件日誌類你設置靜態成員函數來檢索PTR到 事件記錄實例?返回一個全局實例,如果這就是你有,
靜態事件記錄*事件記錄:: getLoggerInstance();
或者如果您有多個事件記錄器則更加細微。
靜態事件記錄*事件記錄:: getLoggerInstance(參數,...);
如果視圖需要在所述事件日誌記錄鉤,它檢索一個事件日誌記錄實例,並連接到它。
我不確定你的意思是#2。你可以在基類中放置一個信號或屬性,所有派生類都會擁有它。 「靜態」信號不起作用。它需要有一個實例化的對象來接收信號。 – Jay
目前我的觀點並非都來自同一個基類,但也許這是我應該考慮的。 – kkeogh