在我的申请,我有下面的类层次结构:是否可以将模板派生的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