2012-01-17 39 views
1

背景是否有基本反射的輕量級信號插槽實現?

我需要實現一個動態可配置的數據處理工具包。將會有幾個數據處理實體,它們可以通過使用GUI工具組合成一個數據流圖。 這個想法類似於直接顯示過濾器圖形(GraphEdit)或蘋果的Quartz Composer。

GUI工具將圖形定義存儲在文件中。當實際處理開始時,將讀取此定義文件,並且必須在運行時創建並連接數據處理對象。

我以前使用Qt的信號和插槽來解決相似的問題,但這次主程序沒有任何GUI。所以我想要使用不那麼臃腫的東西。

問題

什麼是有基本的反射信號/插槽功能最簡單的方法,不使用Qt?

我需要定義固定數量的插槽類型(每個插槽具有一定的預定義功能簽名)。 例如,將會有一個圖像消耗槽,以一個圖像對象作爲參數,或者一個只需要int參數的槽。

在運行時,我需要遍歷所有信號/插槽並動態連接它們。

我不需要在運行時檢查插槽/信號參數。它足夠擁有固定數量的參數集。可以在插槽名稱中加入某種提示來確定簽名類型。

我知道增加信號2,提供信號/插槽功能。但是,實現反射的最快方法是什麼?我應該建立自己的一套宏 - 黑客?

+2

你知道,Qt的信號和插槽[QtCore(http://developer.qt.nokia.com/doc/qt-4.8 /qtcore.html)**不在** [QtGui](http://developer.qt.nokia.com/doc/qt-4.8/qtgui.html)中,因此不需要'#include'或鏈接到所有的GUI庫,是嗎? –

回答

0

我沒有使用它,但它似乎cpgf具有您需要的所有功能(反射和信號/插槽)。

0

我相信你可以使用Qt開發非GUI工具。 AFAIR,doxygen使用Qt。但我還沒有自己使用Qt。

另外一個建議是,除非你準備投入大量的時間和精力,否則你不應該實施你的反射系統。您可能會在應用中實施骯髒且快速的反射系統,但隨着應用的增長,您可能會發現需要更多時間來維護或改進它。
也忘記宏反射。宏太難看,太容易出錯。

對於我的cpgf庫(我是作者),我還沒有準備好推廣它,因爲它相當新(不到一年),並沒有像其他庫一樣成熟。然而,我真的很感謝真正的項目是否使用它來驗證它在現實世界中的效果,而不僅僅是單元測試中的效果。我想爲項目修復bug或類似的東西提供必要的幫助。