2012-07-19 121 views
3

我希望這不是一個愚蠢的問題,但我在模板方面很缺乏經驗,而這個問題在我頭上。我參與了一個嚴重依賴QT Designer進行GUI設計的項目,並且我想提供一個特殊的QWidget子類,允許抽象與複雜服務機制的交互。這個小部件需要類特定的信息來解決這些服務。編碼本身是在Visual Studio 2008中完成的。從QWidget繼承並創建類模板

所以我想創建的是一個模板化的QWidget子類。用我有限的知識,我試圖在全班同學面前拍打着平常的模板聲明:

template <class T> 
class QmitkMyWidget :public QWidget 

unsuprisingly,這不起作用,很容易。生成的moc類將起作用。

error PRJ0019: A tool returned an error code from "Generating Qmitk/moc_QmitkMyWidget.cxx" 

這對我來說似乎很合邏輯,因爲我「沒有告訴他們該做什麼」。我想我必須在QT Designer中指定模板,但我真的不知道怎麼做,而且不幸的搜索在QT Designer中發現了大量代碼模板的結果,但沒有提到泛型編程概念。我真的很感激任何提示& & ||有用的來源/文章。謝謝你的時間!

編輯:傻錯字在第一代碼=/

回答

4

我已經確認這是不可能的。 來源:Limitations mof the moc concept

的要點是,mocs是預處理的,但模板只在編譯時轉換成實際的代碼。

編輯:我可以補充說,我現在只是模板化公共函數,目前爲止工作得很好,儘管它當然要求消費者在他每次調用函數時輸入聲明功能。