在我的申請,我有下面的類層次結構:是否可以將模板派生的C++類與Qt的Q_OBJECT混合?
class Word
{
...
}
template <typename T> class Dictionary
{
...
};
class WordDictionary : public Dictionary<Word>
{
Q_OBJECT
...
}
的WordDictionary類解析字典這需要很長的時間。我正在一個單獨的線程中運行解析函數,我希望它能夠不時地發出GUI線程的信號,以便根據正在解析的當前行號提供進度更新。這就是爲什麼我希望它是一個Q_OBJECT。我試圖讓基類Dictionary爲Q_OBJECT,但得到了一條消息,說明Q_OBJECT模板不受支持。當我刪除了宏觀,只留下WordDictionary爲Q_OBJECT,我得到了一堆的一般形式的錯誤消息:
\ GeneratedFiles \發佈\ moc_dictionary.cpp(44):錯誤C2039: 'staticMetaObject':是不是「詞典」
與成員
[
T =字
]
有什麼我可以做,使我的模板衍生WordDictionary類比硬編碼模板功能以外的Q_OBJECT在這邊,產生了很多樣板代碼?
編輯:更改模板聲明:
template <typename T> class Dictionary : public QObject
使代碼編譯。不過,我不確定我是不是在做一些愚蠢的事情,如果這能夠正常工作的話。
[爲什麼Qt沒有爲信號和插槽使用模板](http://qt-project.org/doc/qt-4.8/templates.html) – 2012-09-28 11:45:06